LG CNS 부트캠프 학습일지 12일차
학습 내용
- Java 기본 문법
- 객체지향 프로그래밍
- Lombok
Java 기본 문법 및 객체지향 프로그래밍
Java를 자신이 있다. 마인크래프트 모드 만든다고 많이 사용했기 때문이다. 기억에 남는 부분은 String 자료형을 비교할 때 == 연산자가 아니라 equals() 메소드를 사용해야 한다는 것이다.
1
2
3
4
5
6
// Case 1
String stringA = "Hello World";
String stringB = "Hello World";
System.out.println(stringA == stringB); // true
1
2
3
4
5
6
7
// Case 2
String stringA = new String("Hello World");
String stringB = new String("Hello World");
System.out.println(stringA == stringB); // false
System.out.println(stringA.equals(stringB)); // true
첫 번째의 경우, 값이 동일한 string literal은 메모리 공간에서 같은 메모리 공간을 가리킨다. stringA와 stringB는 같은 메모리 주소값이 저장되어 있기 때문에 == 연산의 결과는 true이다.
반면 두 번째의 경우. String 생성자를 사용하면 문자열의 값은 동일하지만 그 문자열이 저장된 메모리 공간은 서로 다르다. 따라서 == 연산자를 사용한 결과는 false가 나온다.
따라서 String과 같은 참조자료형 변수를 비교할 때는 equals() 메소드를 사용하는게 안전하다.
Lombok
유용한 라이브러리이다. Annotation으로 getter와 setter를 자동으로 만들기 때문에 코드를 줄일 수 있기 때문이다. 다만 getter와 setter를 노출시키는 것은 클래스 내부 자료를 공개하는거랑 다를 바가 없다. 객체는 내부 자료를 드러내지 않아야 하기 때문에 Lombok을 남용하면 안될 것이다. 문제는 그 정도를 따지기가 어렵다는 것이다.
1
2
3
4
5
6
7
8
9
10
11
@Getter
@Setter
public class MyData {
public MyData(String name, int age) {
this.name = name;
this.age = age;
}
private String name;
private int age;
}
1
2
3
4
5
6
7
8
public class Main {
public static final int main(String[] args) {
MyData data = new MyData("John Doe", 25);
System.out.println("Name: " + data.name);
System.out.println("Age: " + data.age);
}
}
결론
Spring 프레임워크를 익히기 위한 준비운동을 하고 있다. 그렇다고 기본 문법을 소홀히 해서는 안될 것이다. IntelliJ 통합개발환경을 사용하면 문법적 오류를 발견해주기 때문에 개발자가 자바 문법을 완벽하게 숙지할 필요는 상대적으로 적어졌다. 하지만 컴파일 오류 메세지를 읽고 무엇이 문제인지 빠르게 발견하는 능력은 문법적 지식 없이는 불가능할 것이다.
Comments powered by Disqus.