목차 일부
서문 ... 23
1. 껍질을 깨고: 간단한 소개 ... 35
2. 객체마을로의 여행: 객체에 대해 알아봅시다 ... 61
3. 네 변수를 알라: 원시 변수와 레퍼런스 ... 83
4. 객체의 행동: 객체의 상태가 메소드의 속성에 미치는 영향 ... 105
5. 메소드를 더 강력하게: 흐름 제어, 연산 등 ... 129
6....
더보기
목차 전체
서문 ... 23
1. 껍질을 깨고: 간단한 소개 ... 35
2. 객체마을로의 여행: 객체에 대해 알아봅시다 ... 61
3. 네 변수를 알라: 원시 변수와 레퍼런스 ... 83
4. 객체의 행동: 객체의 상태가 메소드의 속성에 미치는 영향 ... 105
5. 메소드를 더 강력하게: 흐름 제어, 연산 등 ... 129
6. 자바 라이브러리: 전부 다 직접 만들어서 쓸 필요는 없습니다 ... 159
7. 객체마을에서의 더 나은 삶: 미래를 준비합시다 ... 199
8. 심각한 다형성: 추상 클래스와 인터페이스 ... 231
9. 객체의 삶과 죽음: 생성자와 메모리 관리 ... 269
10. 숫자는 정말 중요합니다: 수학, 포매팅, 래퍼, 통계 ... 307
11. 위험한 행동: 예외 처리 ... 349
12. 그래픽 이야기: GUI, 이벤트 처리, 내부 클래스에 대한 소개 ... 387
13. 스윙을 알아봅시다: 레이아웃 관리와 구성요소 ... 433
14. 객체 저장: 직렬화와 입출력 ... 463
15. 연결하는 방법: 네트워크 소켓과 멀티스레딩 ... 505
16. 자료구조: 컬렉션 및 제네릭 ... 563
17. 코드를 베포합시다: 패키지 제작과 배포 ... 615
18. 분산 컴퓨팅: RMI와 서블릿, EJB와 지니 ... 641
A 부록A: 마지막 코드 키친 ... 683
B 부록B: 거의 본문에 들어갈 뻔 했던 내용 Top 10 ... 693
찾아보기 ... 710
서문
이책은 어떤 독자를 위한 책일까요? ... 23
당신의 머리에서 일어나고 있는 일 ... 24
초인지 ... 27
자신의 두뇌를 정복하는 방법 ... 29
이 책을 읽는 데 필요한 것 ... 30
기술 편집인 ... 32
감사의 글 ... 33
1. 껍질을 깨고
자바는 어떤 식으로 돌아갈까? ... 36
자바 코드의 구조 ... 41
클래스를 해부합시다 ... 42
main()메소드 ... 44
순환문 ... 45
조건에 따른 분기문 ... 47
'맥주 99병' 애플리케이션 코드 ... 48
자동 구문 생성기 ... 51
집중 토론: 컴파일러와 자바 가상 머신 ... 52
연습문제와 퍼즐 ... 54
2. 객체마을로의 여행
의자 전쟁(객체지향맨 브래드와 프로시저맨 래리) ... 62
상속(기초) ... 65
메소드를 오버라이드하는 방법(기초) ... 66
클래스 안에는 뭐가 있을까?(메소드, 인스턴스 변수) ... 68
첫번째 객체를 만들어봅시다 ... 70
main()을 사용하는 방법 ... 72
게임 코드 알아 맞추기 ... 73
연습문제와 퍼즐 ... 76
3. 네 변수를 알라
변수 선언(자바에서는 유형을 까다롭게 따집니다) ... 84
원시 변수 유형 ... 85
자바 키워드 ... 87
레퍼런스 변수(객체에 대한 리모컨) ... 88
객체 선언과 대입 ... 89
가비지 컬렉션 기능이 있는 힙에서의 객체 ... 91
배열 ... 93
연습문제와 퍼즐 ... 97
4. 객체의 행동
메소드와 객체의 상태 ... 107
메소드 인자와 리턴 유형 ... 108
값으로 전달 ... 111
게터와 세터 ... 113
캡슐화 ... 114
배열에서 레퍼런스를 사용하는 방법 ... 117
연습문제와 퍼즐 ... 122
5. 메소드를 더 강력하게
닷컴 가라앉히기 게임 만들기 ... 130
간단한 닷컴 게임 ... 132
준비 코드를 만들어봅시다(게임을 만들기 위한 유사코드) ... 134
간단한 닷컴 게임을 만들기 위한 테스트 코드 ... 136
간단한 닷컴 게임 코드 작성 ... 137
간단한 닷컴 게임 최종 코드 ... 140
Math. random()으로 난수를 만들어내는 방법 ... 145
명령행에서 사용자가 입력한 내용을 받아오기 위한 인스턴트 코드 ... 146
for 순환문을 써서 순환시키는 방법 ... 148
원시값을 더 큰 변수에서 작은 변수로 캐스팅하는 방법 ... 151
Integer.parseInt()를 가지고 String을 int로 변환하는 방법 ... 151
연습문제와 퍼즐 ... 152
6. 자바 라이브러러
간단한 닷컴 게임 버그 분석 ... 160
ArrayList(자바 API를 활용하는 방법) ... 166
닷컴 클래스 코드 고치기 ... 172
진짜 게임 만들기(닷컴 가라앉히기) ... 174
진짜 게임을 만들기 위한 준비 코드 ... 178
진짜 게임을 만들기 위한 코드 ... 180
부울 표현식 ... 185
라이브러리(자바 API) 활용 ... 188
패키지 사용 방법(import 선언문, 전체 이름) ... 189
HTML API 문서와 레퍼런스 서적을 활용하는 방법 ... 192
연습문제와 퍼즐 ... 195
7. 객체마을에서의 더 나은 삶
상속의이해(수퍼클래스와 하위클래스 사이의 관계) ... 202
상속 트리 설계(Animal 시뮬레이션) ... 204
중복된 코드를 피하는 방법(상속 활용 방법) ... 205
메소드 오버라이딩 ... 206
"A는 B다" 관계와 "A에는 B가 있다" 관계(욕조 안의 아가씨) ... 211
수퍼클래스로부터 상속받는 것 ... 214
상속 활용의 장점 ... 216
다형성(하위클래스 객체에 대해 수퍼유형 레퍼런스를 사용하는 방법) ... 217
오버라이딩 규칙(인자와 리턴 유형은 건드리지 맙시다) ... 224
메소드 오버로딩(메소드명을 재활용하는 것뿐입니다) ... 225
연습문제와 퍼즐 ... 226
8. 심각한 다형성
인스턴스를 만들 수 없는 클래스 ... 234
추상 클래스(인스턴스를 만들 수 없습니다) ... 235
추상 메소드(반드시 구현해야 합니다) ... 237
다형성을 실제로 활용하는 방법 ... 240
Object 클래스(모든 클래스의 수퍼클래스) ... 242
ArrayList에서 객체를 꺼내는 방법(기본적으로 모두 Object 유형입니다) ... 245
컴파일러에서 레퍼런스 유형을 체크하는 방법 ... 247
내부 객체 ... 248
다형적 레퍼런스 ... 249
객체 레퍼런스 캐스팅(상속 트리에서 아래로 내려가는 방법) ... 250
죽음의 다이아몬드(다중 상속에서 생길 수 있는 문제) ... 257
인터페이스 사용 방법 ... 258
연습문제와 퍼즐 ... 264
9. 객체의 삶과 죽음
스택과 힙, 객체와 변수가 살아가는 곳 ... 270
스택에 들어있는 메소드 ... 271
지역 변수가 있는 위치 ... 272
인스턴스 변수가 있는 위치 ... 273
객체 생성 ... 274
생성자(new를 실행하면 실행되는 코드) ... 275
새로운 Duck 객체의 상태를 초기화하는 방법 ... 277
오버로드된 생성자 ... 281
수퍼클래스 생성자 ... 284
this()를 써서 오버로드된 생성자를 호출하는 방법 ... 290
객체의 삶 ... 292
가비지 컬렉션 ... 294
연습문제와 퍼즐 ... 300
10. 숫자는 정말 중요합니다
Math 클래스 ... 308
정적 메소드 ... 309
정적 변수 ... 311
상수(static final 변수) ... 316
Math 메소드(random(), round(), abs()등) ... 320
래퍼 클래스(Integer, Boolean, Character 등) ... 321
오토박싱 ... 323
숫자 포매팅 ... 328
날짜 포매팅 및 조작 ... 335
import static 구문 ... 341
연습문제와 퍼즐 ... 344
11. 위험한 행동
음악 프로그램 만들기(비트박스) ... 350
위험한 코드를 호출해야 한다면 어떻게 할까요? ... 353
예외를 통해 "뭔가 안 좋은 일이 생겼음"을 알 수 있습니다 ... 354
컴파일러에서 위험 요소를 파악하고 있는지 확인해줍니다 ... 355
try / catch를 써서 예외를 잡아내는 방법 ... 356
try / catch 블록에서의 흐름 제어 ... 360
finally 블록 ... 361
여러 가지 예외를 잡아내는 방법 ... 363
예외 선언 ... 369
처리 또는 선언 규칙 ... 371
코드 키친(소리를 만드는 방법) ... 373
연습문제와 퍼즐 ... 382
12. 그래픽 이야기
첫번째 GUI ... 389
사용자 이벤트 ... 391
리스너 인터페이스 구현 방법 ... 392
버튼의 ActionEvent를 받는 방법 ... 394
GUI에 그래픽을 출력하는 방법 ... 397
PaintComponent() ... 399
Graphics2D 객체 ... 400
화면에 버튼 두개 이상을 집어넣는 방법 ... 404
내부 클래스 ... 410
애니메이션 ... 416
코드 키친 ... 420
연습문제와 퍼즐 ... 428
13. 스윙을 알아봅시다
스윙 구성요소 ... 434
레이아웃 관리자 ... 435
세 가지 레이아웃 관리자 ... 437
BorderLayout ... 438
FlowLayout ... 442
BoxLayout ... 445
JTextField ... 447
JTextArea ... 448
JCheckBox ... 450
JList ... 451
코드 키친 ... 452
연습문제와 퍼즐 ... 458
14. 객체 저장
객체의 상태를 저장하는 방법 ... 465
직렬화된 객체를 파일로 저장하는 방법 ... 466
자바의 입력과 출력 스트림 ... 467
객체 직렬화 ... 468
Serializable 인터페이스를 구현하는 방법 ... 471
transient 변수를 사용하는 방법 ... 473
객체를 역직렬화하는 방법 ... 475
텍스트 파일에 쓰는 방법 ... 481
java.io.File ... 486
텍스트 파일로부터 읽어오는 방법 ... 488
split()을 써서 String을 토큰으로 나누는 방법 ... 492
코드 키친 ... 496
연습문제와 퍼즐 ... 500
15. 연결하는 방법
채팅 프로그램 개요 ... 507
연결, 송신, 수신 ... 508
네트워크 소켓 ... 509
TCP 포트 ... 510
Socket으로부터 데이터를 읽는 방법(BufferedReader 사용) ... 512
Socket으로 데이터를 쓰는 방법(PrintWriter 사용) ... 513
DailyAdviceClient 프로그램 만들기 ... 514
간단한 서버 만들기 ... 517
DailyAdviceServer 코드 ... 518
채팅 클라이언트 만들기 ... 520
다중 호출 스택 ... 524
새로운 스레드를 시작하는 방법 ... 526
Runnable 인터페이스 ... 528
새로운 Thread 객체의 세 가지 상태 ... 529
실행 가능한 상태와 실행 중인 상태 사이의 전환 ... 530
스레드 스케줄러 ... 531
스레드를 중지시키는 방법 ... 535
스레드 두 개를 만들어서 시작하는 방법 ... 537
병행성 문제 ... 539
라이언과 모니카의 병행성 문제를 코드로... ... 540
락을 거는 방법 ... 544
모든 객체에는 락이 있습니다 ... 545
공포의 '갱신 내용 손실' 문제 ... 546
동기화된 메소드 ... 548
락을 해제할 수 없는 경우 ... 550
멀티스레드를 사용한 ChatClient 코드 ... 552
인스턴트 SimpleChatServer ... 554
연습문제와 퍼즐 ... 558
16. 자료구조
컬렉션 ... 567
Collections.sort()를 이용한 ArrayList 정렬 ... 568
제네릭과 형 안전성 ... 574
comparable 인터페이스를 구현하는 항목 정렬법 ... 581
Comparator를 활용한 정렬법 ... 586
컬렉션 API - 목록, 집합, 맵 ... 591
HashSet를 이용해서 중복을 피하는 법 ... 593
HashCode() 및 equals() 오버라이딩 ... 594
HashMap ... 601
다형성을 위한 와일드카드 활용 ... 608
연습문제 및 퍼즐 ... 610
17. 코드를 배포합시다
배포 방법 ... 616
소스 코드와 클래스 파일은 분리합시다 ... 618
실행 가능한 JAR 파일을 만드는 방법 ... 619
실행 가능한 JAR를 실행하는 방법 ... 620
클래스를 패키지에 넣읍시다 ... 621
패키지와 디렉토리 구조 ... 623
패키지로 컴파일하고 실행하는 방법 ... 624
-d 컴파일 옵션 ... 625
실행가능한 JAR 파일을 만드는 방법(패키지) ... 626
웹을 통해 배포하기 위한 자바 웹 스타트(JWS) ... 631
JWS 애플리케이션을 만들어서 배포하는 방법 ... 634
연습문제와 퍼즐 ... 635
18. 분산컴퓨팅
자바 원격 메소드 호출(RMI), 자세한 예제 ... 648
서블릿 ... 659
엔터프라이즈 자바 빈즈(EJB) ... 665
지니 ... 666
정말 훌륭한 범용 서비스 브라우저를 만드는 방법 ... 670
끝 ... 682
A. 부록 A
마지막 비트박스 코드(클라이언트 코드) ... 684
마지막 비트박스 코드(서버 코드) ... 691
B. 부록 B
Top 10 목록 ... 694
i 찾아보기 ... 710
더보기 닫기