본문 바로가기

책소개

유쾌한 자바 퍼즐러 (Java Puzzlers)


Joshua Bloch/ Neal Fafter 두분이 쓰신 책입니다.
송치형님께서 번역하셨구요..

이책을 알게된 경위는 effective java 2판을 읽으면서 그곳 중간 중간에 나와있는

출처 문구 때문이었습니다. 출처에 [puzzler] 이런식으로 쓰여있는데, 그것만 봐도 어째 이 책이

자바 코드로 문제 내놓고 설명을 해준 그런 책이 아닐까 싶었습니다.

그래서 책을 찾아봤더니 딱! 그런 책인데다가 번역서까지 있더군요.

그래서 마침 읽던 책도 다 읽고 해서 이 책을 구입했습니다.

유쾌한 자바 퍼즐러.

애매하고 오묘한 문제들을 내놓고

그 문제에 대한 설명을 잘 해주고 있습니다. 번역도 개인적으로 생각하기엔 아주 잘 된 것 같습니다.

다만, 제목처럼 유쾌하지만은 않습니다 --;

자바 언어 스펙에 대한 지식이 거의 없는 저로서는 더더욱 --;;;

문제를 보고 풀 노력이라도 해봐야 하는데

문제를 보면 도무지 어떻게 풀어야 하는건지 감도 안 옵니다.

이 책은 단순히 코딩 기법이나 트릭등을 이야기 하는 책이 아닙니다.

(물론 아주 조금 그런 내용들도 있습니다.)

하지만 대부분의 내용은 코딩을 명확하게 하라는 데 초점이 있는 것 같습니다.

그리고 문제 자체는..

자바 언어 스펙에 대한 이해와, 논리회로등 언어 기본적인 지식이 없으면 뭐 그냥 손도 못 댈 문제들이 대부분입니다.

어떻게 보면 "이런 내용들을 실제 코딩 할 때 사용하기나 할까??" 라고 생각 할 만한 문제들이기도 하지만

조금만 다르게 생각해보면 이런 내용들을 알고 있는 것이 정말 중요한 것이 라는 생각이 들기도 합니다..

여러가지 문제들이 있는데..대충 이런 스타일의 문제가 나옵니다.


public class Elementary {
 public static void main(String[] args) {
   System.out.println(12345 + 5432l);
 }
}

이것은 무엇이 출력될까요?

66666이 아니라 17777이 출력됩니다. 눈치 채신분도 계시겠지만 5432l에서 맨 끝은 1이 아니라 소문자 L 입니다.

이 문제의 교훈은 long 타입 리터럴을 사용 할 때는 대문자 L을 사용하라는..ㅎㅎ 이런식의 문제도 있고..



public static boolean isOdd(int i) {
 return i%2 == 1;
}

i가 홀수인지 판별하는 메서드인데 잘 동작할까요?

이런식의 문제입니다.


이 외에도 16진수, 8진수를 다루는 문제

char,short,byte등의 캐스팅 문제부터 여러 문제들이 있습니다.

확실히 어렵습니다. 언어에 대한 이해가 낮은 저로서는 더더욱 어렵습니다.

문제를 풀면서 읽는다기 보다는 문제를 확인하고 답을 읽어보는 식으로 읽고 있습니다.

그래도 재미있고..

좋은 책 같습니다. ^^

다만, 겉 표지가 양장이라.. -_-ㅋ