Java

언어/Java

[Java] 가변인자 ... 표현

오늘은 Java의 ... 표현에 대해서 알아보려고한다. 이 표현을 최근에 접해보면서 알게되었는데, 생각해보면 가끔 코딩을 하다가 파라미터를 받을 때 ... 같은 표현을 본 적이 있는 것 같다. ​ 이 표현의 이름은 ellipsis 뜻 풀이 하자면 생략이다. (가변길이 파라미터 또는 가변인자라고도 불린다) 같은 유형의 타입을 여러개 받아도 처리 할 수 있게 해주는 역할을 해준다. ​ 이렇게 말하면 살짝 이해가 안될 수도 있을 것 같아 예제 코드를 살펴보자. public class Main{ public static void main(String[] args) { String[] name = {"GG", "_", "BB"}; print("GG_BB"); System.out.println("\n"); prin..

Spring

[Spring 핵심 원리] SOLID

이번에는 좋은 객체지향 설계를 위한 5가지 원칙인 SOLID에 대해서 정리해보려고 한다. 원래는 의존성 주입하는 방식들에 대한 글을 쓰려했으나 이것을 먼저 정리하는 것이 좋을 것 같다고 생각되어 정리하게되었다. SOLID 원칙같은 경우에는 굳이 Spring이 아니더라도 좋은 객체지향 프로그램을 만들고 싶다면 지켜야 될 원칙이다. 어떤 내용인지 한 번 살펴보자. ​ 1. SRP (Single Responsibility Principle, 단일 책임 원칙) 단일 책임 원칙이란 한 클래스는 하나의 책임만을 가져야 한다는 원칙이다. 예를 들어서 학생들을 저장하고 조회하는 기능을 만드려고 하는데, 이 클래스 내에서 프로그램의 실행까지 이루어진다면, 이는 한 클래스가 하나의 책임이 아닌 여러 책임을 가지게 되는 것..

언어/Java

[Java] Static import

오늘은 static import에 대해서 알아보려고 한다. 그동안 개발을 하면서 들어본 적이 없었기에 매우 편리한 기능이라고 생각되었다. 어떤 기능인지 한 번 살펴보자. public class Main{ public static void main(String[] args) { System.out.println("GG_BB"); } 쉽게 알아보기 위해서 누구나 한번 쯤은 써봤을 println을 예제로 사용하겠다. 위 코드는 그저 GG_BB라는 구문 하나를 출력하기 위한 코드이다. 이 코드에 static import를 적용시켜보겠다. import static java.lang.System.*; public class Main{ public static void main(String[] args) { out...

언어/Java

[Java] 컬렉션 프레임워크

이번 글에선 컬렉션 프레임워크에 대해서 정리해보려고 한다. 컬렉션 프레임워크는 프로그래밍에 있어서 필수불가결한 요소라고 생각한다. 저번에 설명한 스트림도 컬렉션을 활용할 수 있는 것이고, 기본적으로 배열같은 데이터는 실무에서나, 혼자 코딩할 때나, 코딩테스트를 할 때도 거의 항상 들어가기 때문이다. 그렇기에 더 자세히 이해하고 활용할 수 있어야겠다는 생각을 하게 되었다. 그렇다면 한번 시작해보자. ​ 일단 컬렉션에 대해 설명하기 전에 사진을 보며 종류에 대해서 살펴보자. ​ 컬렉션 프레임워크는 인터페이스로 구현되어있다. 그 인터페이스(컬렉션)으로 구현되어있는 것들이 List, Set, Map인데 이 컬렉션 인터페이스들을 통해 구현한 것들(ArrayList, HashMap 등)을 컬렉션 클래스라고 불린다...

언어/Java

[Java] - Lambda 표현식과 Stream

이번 글에서 다룰 주제는 Java SE 8버전에서 추가된 Lambda(람다) 표현식과 Stream API에 대해서다. 나는 애석하게도 Lambda 에 대한 것이나 Stream 을 배워본 적이 없어서 활용해보질 못했었다. 그렇기에 더욱 더 제대로 공부해야겠다고 생각이든다. ​ 이번 글에서 설명할 람다 표현식과 스트림을 이용하면 많은 장점이 있다. 기존의 불필요한 코드를 줄여주고, 가독성을 높여주며 효율 면에서도 좋은 효과를 줄 수 있다. 대체 어떤 방식이길래 그러는지 정리해보겠다. ​ 1. Lambda 표현식 람다 표현식은 식별자 없이 실행이 가능한 함수를 만들 때 쓰인다. 이 한줄을 보면 식별자가 없는데 어떻게 실행을 하지? 라는 생각이 들 수도 있다. 자바스크립트를 해봤다면 변수에 함수를 넣어서 익명함..

언어/Java

[Java] 자바 프로그램의 구조

오늘은 자바 프로그램의 기본 구조에 대해서 정리해보려고 한다. 오늘 설명하는 내용은 기본적인 내용이기도 하지만, 면접질문에도 많이 나오고, 객체지향에 대한 중심이 담겨 있다고 생각한다. 얼핏하면 헷갈리는 것들도 정리해서 잘 기억할 수 있도록 해야겠다. ​ 자바 프로그램의 기본 구조 ​ 우리가 자바 코딩을 하기 위해 무언가를 추가할 때, 많은 선택지가 있다. Class, Interface, Enum, Annotation 까지... Class와 Interface 까지는 들어봤어도 Enum? Annotation?? 할 수도 있을 것 같다. 하지만 그리 어렵지는 않은 개념들이니 정확히 알아두고 활용해보는 게 좋을 것이다. ​ 1. Class 첫 번째로는 자바를 처음 배우게 되면 맞이하게 되는 클래스이다. 클래스..

언어/Java

[Java] - 자바란?

Java의 기본다지기를 해보려고한다. 아무래도 기본이 조금 부족한 걸 여러모로 느껴서, 처음 시작하는 느낌으로 돌아가 Java에 대한 걸 처음 부터 시작해서 끝까지 모르는 것이 없을 정도로 하나하나 이해하면서 넘어 갈 생각이다. ​ 오늘의 기본은 조금 고리타분하게 들릴 수도 있는 Java에 대해서이다. ​ JAVA? 자바언어는 객체 지향적 프로그래밍 언어이다. 객체지향(Object-Oriented Programming, OOP)은 명령어들이 합쳐져 만들어진 컴퓨터 프로그램을 하나의 독립된 단위로 보는 것을 말한다. 각 객체들(각 기능들)은 메시지를 주고받고 데이터를 처리하여, 프로그램을 유연하고 용이하게 변경할 수 있게 한다. 쉽게 말하자면 개발한 요소(클래스) 하나하나가 객체가 되고 그 요소끼리 상호작..

언어/Java

[Java] Overriding, Overloading

오늘은 자바의 overriding, overloading 에 대해서 설명하려고 한다. 객체지향언어인 자바에서은 매우 중요한 개념이기도 하니 확실히 이해하면 좋을 것 같다. ​ 1. overriding 오버라이딩은 말그대로 덮어쓰기를 뜻한다. 다른 말로 표현하자면 메소드를 다시 정의하는 것이라고 말할 수 있다. class Member{ void printCN() { System.out.println("Member"); } } class Member_sub extends Member { void printCN() { System.out.println("Member_sub"); } } 위와 같이 같은 이름의 메소드를 다시 정의하는걸 overriding 이라고 한다. 재정의를 했을 때는 @Override를 통해..

언어/Java

[Java] 접근제어자(제한자)

오늘은 접근제어자에 대해서 정리해보려고 한다. 옛날에 코딩할 때는 중요성을 못 느끼고 무분별하게 사용만을 했는데, 접근제어자를 적절히 사용하면 위험요소들을 줄일 수 있다. ​ 자세한 예를 들어 이해와 기억에 도움이 되도록 작성해 보려고한다. ​ 접근제어자에는 public, protected, default, private 가 존재한다. 일단 아래와 같은 test 패키지에 변수들이 있다고 가정하겠다. package test; public class Am_Member { public String pub_name = "pub_GG_BB"; protected String pro_name = "pro_GG_BB"; private String pri_name = "pri_GG_BB"; String name = "d..

언어/Java

[Java] Optional

오늘은 Optional에 대해서 알아보려고 한다. 그동안 개발을 해보면서 Optional이라는 걸 본 적이 없었기에, 처음 보는 만큼 자세히 이해해야겠다. ​ Optional 이란 개발을 하면서 흔히 볼 수 있는 NullPointerException을 방지 할 수 있도록 도와주는 클래스이다. null 값이 들어올 수 있는 값을 감싸는 클래스로써, 참조하더라도 오류가 나지 않도록 도와주는 역할을 한다. ​ 어떻게 사용이 되는지 보자면 // Member Class private final name = "GG_BB"; public void getName() { return name; } public void setName(String name) { this.name = name; } //////////////..

언어/Java

[Java] 클래스, 객체, 인스턴스

오늘은 클래스, 객체, 인스턴스에 대해서 설명해보려고한다. 어떤 느낌으로 사용되는지는 대충 알지만 남에게는 설명하지 못할 것 같아서 정리해보게 되었다. ​ 밑에 코드를 보면서 이해하면 더 좋을 거 같아 넣어보았다. public class Member() { String name = "GG_BB"; public static void Mem_print() { System.out.println(""); } } 1) 클래스 (Class) 변수와 메서드의 집합이며, 객체를 만들기 위한 설계도라고 생각하면 될 것 같다. ​ 2) 객체 (Object) 소프트웨어에 구현할 대상을 뜻한다. 좀 더 쉽게 말하자면 만들고자하는 기능이라고 생각하면 될 것 같다. 클래스의 인스턴스라고도 부른다. ​ 3) 인스턴스 (Instan..

언어/Java

[Java] static 변수

이번엔 static 변수에 대해 알아보려고 한다. 아예 몰랐던 지식은 아니지만 정확히는 어떤 역할을 하는지 알지 못하는 거 같아서 정리하게 됬다. ​ 대충 메소드나 변수를 만들 때 쓰이고 메모리는 고정되지만 값만 바뀌게 할 수 있는 키워드라 생각하고 있었다. ​ 하지만 정확히 설명하자면 메모리에 고정적으로 할당되어, 프로그램이 종료될 때 해제되는 변수를 static 변수라고 말한다. ​ 이해를 돕기위한 예제를 가져와보자면 public class Member { private String name = "BB_GG"; } 다음과 같은 클래스가 있을 때, 이 클래스를 통해 다른 클래스에서 n개의 Member를 생성하면 "BB_GG"라는 값을 가지는 메모리가 n개가 생겨버린다, 이는 메모리 효율에 매우 좋지않은..

ppusda
'Java' 태그의 글 목록