자바의 정석 3rd Edition 1권

dong5854·2022년 7월 14일
0

독후감

목록 보기
1/1
post-thumbnail


자바의 정석 3rd Edition 1권

독서 계기

자바 공부를 스프링 공부하면서 그때그때 필요할때마다 임기응변 식으로 공부하다보니까 언어에 대한 기본기가 부족하다는 생각이 들어 모던 자바 인 액션 책을 읽으려구 구매했었다. 앞부분을 조금 읽다 보니 내 생각보다 더 기본이 부족하다는 생각이 들어 더 쉬운 가초서적을 찾아보던 중 대학교 1학년 대 자바를 공부하겠다고 사두고 모셔둔 자바의 정석 책이 생각나서 읽게 되었다.
다음에 읽을 예정인 모던 자바 인 액션

어떻게 읽었나

이 책이 두께가 두꺼운 편이라 사실 1권은 건너뛰고 2권에서 지네릭스, 람다, 스트림, 쓰레드에 대한 내용만 읽을까 고민도 했지만 기왕 기본기 다지기로 마음먹은거 1권부터 읽자고 마음먹고 매일 출퇴근 시간에 읽어서 1권을 마무리 하게 되었다.

어땠나

사실 언어들 기초는 다 비슷비슷하다는 생각에 1권에서 건질 내용이나 있을까 싶은 의심을 품고 책을 읽었는데 생각보다 많은 도움이 된 것 같다. 좋았던 점은 출퇴근 시간에 읽었기 때문에 코드를 직접 쳐보면서 볼 시간이 없었는데 코드와 실행결과가 설명을 위해 잘 나타나 있어 눈으로 코드를 쫓아가면서 결과를 예상하고 예상대로 결과가 나왔는지 확인 할 수 있는 점이었다.

인상깊었던 내용들

이름 붙은 반복문

  class Main{
   public static void main(String[] args){
     MyLoop : while(true){
       for(int i=0; i < 100; i++){
         System.out.println(i);
         if (i == 5) break MyLoop;
       }
     }
   }  
}

위와 같이 반복문에 이름을 붙여 break 문 또는 continue 문을 사용할 수 잇는 점이 인상 깊었다. 예전에 파이썬에서 딱 이 기능이 필요했는데 파이썬은 이렇게 반복문에 이름을 붙여 탈출하는 것이 불가능했던 것이 기억났었다.

초기화 블럭

초기화 블럭이라는 것이 있는지 몰라 초기화는 항상 생성자로 해왔었다. 초기화 블록이 있는지 진작 알았으면 조금 더 깔끔하게 코딩할 수 있었을 것 같다.

생성자에서 this로 다른 생성자 호출하기

this는 클래스에 변수 앞에만 사용하는 줄 알았었는데 this 해당 클래스의 다른 생성자를 호출 할 수 있었다.

디폴트 메서드

디폴트 메서드의 존재를 몰랐다. 인터페이스가 이걸 사용하지 않는 상황이 가장 좋겠지만 알아두면 도움이 될 것 같다.

내부 클래스

내부 클래스들에 대해 더 자세히 볼 수 있는 기회었다. 특히 지역 클래스에서 접근하는 지역 변수 앞에 final이 필요했고 JDK1.8 부터는 이 final를 컴파일러가 자동으로 붙여준다는 점이 인상깊었다.

예외 클래스의 계층구조

예외 클래스가 Exception 클래스와 그 자손들이 있고(RuntimeException 제외), RuntimeException 클래스와 그 자손들 두 그룹으로 나뉘어서 RuntimeException는 컴파일러가 예외 처리를 확인하지 않는 unchecked 예외고, Exception 클래스들은 checked 예외라고 하는 것을 처음 알았다.

멀티 캐치 블럭

지금까지 에외마다 catch 블럭을 계속 추가해줬는데 멀티 캐치 블럭으로 중복 코드를 줄일 수 있을 것 같다.

try with resources문

파이썬의 with문이 바로 생각났다. 잘 사용할 수 있을 것 같은데 왜 지금까지 사용을 안했었나 라는 생각이 들었다.

initCause

initCause로 예외 처리를 연결하는 방법을 처음 알았다.

Object의 equals 와 String의 equals

보통 equals 함수는 Srting이 같은 확인을 위해 사용했는데 이는 String에서 equals를 오버라이드해서 그런 것이고 Object의 클래스는 원래 주소값을 비교하는 함수라는 것을 알 수 있었다.

깊은 복사, 얕은 복사

예전에 리펙토링 2판을 읽으면서 처음 접한 개념이었는데 리펙토링 2판은 자바스크립트로 코드가 제공되어 해당 내용을 자바로 다시 한번 볼 수 있었다.

StringBuffer

StringBuffer에 대해서 처음 알았는데 알고리즘 문제를 풀 때 도움이 될 수 있을 것 같았다.

static 멤버는 인스턴스 멤버를 직접 호출하지 못한다.

static멤버는 메모리에 먼저 올라가 인스턴스 멤버를 직접 호출할 수 없다는 점은 잘 기억해두는게 좋을 것 같다.

잡생각들

독후감을 작성하기로 마음먹고 하칠 독후감의 첫번째 대상이 언어 기본서라서 좀 아쉬운 느낌이 들었다. 어차피 예전에 읽은 책들도 다시 읽어볼 생각이니 다른 책들은 그때 독후감을 써야지...

요즘 Golang에 빠져서 Golang 공부를 병행하고 알고리즘은 또 주로 파이썬으로 풀다보니까 문법들이 자꾸 헷갈린다. 계속 이렇게 양다리도 아니고 삼다리를 걸치는게 맞나 싶은 생각이 들지만 지금은 아직 셋 다 포기하고 싶지않아서 불안한 마음을 품고 공부중이다. 시간 많이 쏟으면 해결 되겠지😥

끝.

profile
https://github.com/dong5854?tab=repositories

0개의 댓글