목차
Chapter 01 컴퓨터 및 자바의 소개
목표 = 4
전제 조건 = 4
1.1 컴퓨터 기초 = 4
하드웨어와 메모리 = 5
프로그램 = 7
프로그래밍 언어와 컴파일러 = 9
자바 바이트 코드 = 10
클래스 적재기 = 12
1.2 프로그램 구상 = 13
객체지향 프로그래밍 = 13
캡슐화 = 14
다형성 = 15
상속 = 16
만약 여러분이 다른 프로그래밍 언어를 알고 있다면? = 17
알고리즘 = 18
재사용 요소 = 19
테스트와 디버깅 = 19
1.3 자바 맛보기 = 20
자바 언어의 역사 = 20
애플릿 = 22
첫 번째 자바 응용 프로그램 = 22
자바 프로그램이나 클래스의 컴파일 = 27
자바 프로그램 실행 = 28
1.4 그래픽 보조자료(선택사항) = 29
객체와 메소드 = 30
예제 그래픽 애플릿 = 30
그림의 크기 및 위치 = 33
호(Arc) 그리기 = 36
애플릿 실행 = 36
요약 = 39
프로그래밍 과제 = 40
Chapter 02 기본 데이터 형, 문자열, 스크린 입출력
목표 = 44
전제 조건 = 44
2.1 기본데이터 형 및 표현 = 44
변수 = 44
자바 식별자 = 48
기본 데이터 형 = 50
대입문 = 51
특별한 대입 연산자 = 53
간단한 스크린 출력 = 54
간단한 입력 = 54
숫자 상수 = 56
호환 가능한 대입 = 57
형 변환 = 59
프로그래밍 팁 : 변수 초기화 = 61
산술 연산자 = 63
괄호와 우선순위 규칙 = 64
사례 연구 : 자판기 잔돈 = 66
증가 및 감소 연산자 = 71
증감 연산자에 대한 추가 설명 = 72
2.2 String 클래스 = 73
문자열 상수와 변수 = 73
문자열 결합 = 74
클래스 = 75
String 클래스의 메소드 = 76
문자열 처리 = 80
이스케이프 문자 = 82
유니코드 문자 = 83
2.3 키보드 및 스크린 입출력(I/O) = 83
스크린 출력 = 84
키보드 입력 = 86
2.4 문서화 및 스타일 = 95
프로그래밍 팁 : 의미 있는 변수 이름을 사용하라 = 95
문서화 및 주석문 = 95
들여쓰기 = 97
이름을 붙인 상수 = 99
2.5 그래픽 보조자료(선택사항) = 102
프로그래밍 예제 : 그래픽 애플릿에 적용된 스타일 규칙 = 102
JOptionPane = 104
다른 숫자 형을 입력하는 방법 = 112
프로그래밍 예제 : 윈도우 입출력을 사용하는 프로그램의 변경 = 113
요약 = 116
프로그래밍 과제 = 117
Chapter 03 제어 흐름
목표 = 122
전제 조건 = 122
3.1 분기문 = 122
if-else 문 = 122
부울 식 소개 = 126
프로그래밍 팁 : 알파벳 순서 = 132
중첩문 및 복합문 = 134
if-else 다중 분기 = 137
프로그래밍 예제 문자 등급 대입 = 138
switch 문 = 141
조건 연산자(선택사항) = 145
3.2 자바 루프 문 = 146
while 문 = 146
do-while 문 = 151
프로그래밍 예제 : 벌레(Bug)의 침입 = 155
for 문 = 158
for 문에 사용된 콤마(선택사항) = 163
반복문 내의 break 문 = 166
exit 메소드 = 168
3.3 루프를 이용한 프로그래밍 = 169
루프 몸체 = 169
초기화 = 170
루프의 종료 = 171
프로그래밍 예제 : 중첩 루프 = 174
프로그래밍 팁 : 루프 몸체 내의 변수 선언을 피하라 = 174
루프의 버그 = 174
변수 추적 = 178
3.4 boolean 형 = 179
부울 식과 boolean 변수 = 180
프로그래밍 팁 : boolean 변수의 작명법 = 181
우선순위 규칙 = 182
부울 값의 입출력 = 185
사례 연구 : 루프 종료를 위한 부울 변수의 사용 = 186
3.5 그래픽 보조자료(선택사항) = 189
그리기 색상 지정 = 189
프로그래밍 예제 : 여러 개의 얼굴을 출력하는 애플릿 = 192
drawString 메소드 = 197
Yes/No 선택을 위한 JOptionPane윈도우 = 198
요약 = 200
프로그래밍 과제 = 201
Chapter 04 클래스 및 메소드 정의
목표 = 206
전제 조건 = 206
4.1 클래스 및 메소드 정의 = 206
클래스 파일 및 독립적인 컴파일 = 209
인스턴스 변수 = 209
메소드 사용법 = 213
void 메소드 정의 = 216
값을 전환하는 메소드 = 218
this 매개변수 = 224
지역 변수 = 225
블록 = 227
기본 데이터 형의 매개변수 = 229
클래스와 메소드 정의 문법의 요약 = 235
4.2 정보 은닉과 캡슐화 = 236
정보 은닉 = 236
프로그래밍 팁 : 매개변수는 메소드에 대해 지역적이다 = 236
선결 조건 및 후결 조건 주석문 = 237
public 및 private 접근지정자 = 240
프로그래밍 팁 : 인스턴스 변수는 private이어야 한다 = 243
프로그래밍 예제 : Purchase 클래스 = 247
캡슐화 = 251
javadoc을 이용한 자동 문서화 = 254
UML 클래스 다이어그램 = 254
4.3 객체와 참조 = 256
클래스 형의 변수와 객체 = 256
프로그래밍 예제 : Species 클래스 = 266
부울 값을 반환하는 메소드 = 269
클래스 형의 매개변수 = 270
클래스 매개변수와 개본 데이터 형 매개변수의 비교 = 273
4.4 그래픽 보조자료(선택사항) = 276
Graphics 클래스 = 276
프로그래밍 예제 : 보조 메소드를 이용한 여러 개의 얼굴 = 277
init 메소드 = 283
애플릿에 레이블 추가 = 283
요약 = 287
프로그래밍 예제 = 288
Chapter 05 객체와 메소드
목표 = 294
전제 조건 = 294
5.1 메소드 프로그래밍 = 295
메소드를 호출하는 메소드 = 295
프로그래밍 팁 : 보조적인 메소드는 private으로 만들어라 = 301
5.2 static 메소드 및 static 변수 = 303
static 메소드 = 303
static 변수(선택사항) = 310
Math 클래스 = 312
Integer, Double 및 다른 포장 클래스 = 315
5.3 메소드 설계 = 320
사례 연구 : 출력 형식 = 320
Top-Down 설계 = 325
메소드 검사 = 327
5.4 오버로딩 = 328
오버로딩의 기초 = 329
프로그래밍 예제 : Pet 클래스 = 331
프로그래밍 예제 : Money 클래스 = 338
5.5 생성자 = 345
생성자 정의 = 345
프로그래밍 팁 : 생성자에서 다른 메소드를 호출할 수 있다 = 353
5.6 다시 보는 정보 은닉 = 355
5.7 패키지 = 359
패키지 및 import = 359
패키지 이름과 디렉토리 = 359
이름 충돌 = 363
5.8 그래픽 보조자료(선택사항) = 364
프로그래밍 팁 : 코드의 외양과 동작을 따로 = 364
버튼의 추가 = 364
이벤트 구동 프로그래밍 = 366
프로그래밍 예제 완전한 버틀 애플릿 = 367
버튼 프로그래밍 = 367
아이콘 = 373
가시성 변경 = 376
프로그래밍 예제 : 가시성 변경의 예제 = 376
요약 = 380
프로그래밍 과제 = 381
Chapter 06 배열
목표 = 386
전제 조건 = 386
6.1 배열의 기초 = 387
배열의 생성 및 접근 = 387
배열의 세부사항 = 388
프로그래밍 팁 : 단수형 배열 이름을 사용하라 = 392
length 인스턴스 변수 = 393
프로그래밍 팁 : 배열을 차례대로 다루고자 할 경우 for 루프를 사용하라 = 395
배열의 초기화 = 396
6.2 플래스와 메소드 내에서의 배열 사용 = 397
사례 연구 : 판매 보고 = 397
메소드 인자로서의 배열 요소(인덱스 변수) = 405
전체 배열을 메소드 인자로 사용 = 407
main 메소드의 인자 = 408
배열을 반환하는 메소드 = 413
6.3 배열과 클래스를 이용한 프로그래밍 = 416
프로그래밍 예제 : 특수한 목록 클래스 = 416
부분적으로 채워진 배열 = 423
배열 검색 = 424
6.4 배열의 정렬 = 426
선택 정렬 = 427
다른 정렬 알고리즘 = 432
6.5 다차원 배열 = 432
다차원 배열의 기초 = 434
다차원 배열 매개변수와 반환 값 = 437
다차원 배열의 구현 = 438
비정형 배열(선택사항) = 441
프로그래밍 예제 : 근로시간 기록 = 442
6.6 그래픽 보조자료(선택사항) = 448
파트 1: 문자열 영역과 문자열 필드 = 449
프로그래밍 예제 : 질문과 대답을 수행하는 애플릿 = 449
JTextArea와 JTextField 객체 = 452
파트 2: 다각형 그리기 = 453
다각형 그리기 = 453
요약 = 457
Chapter 07 상속
목표 = 464
전제 조건 = 464
7.1 상속의 기초 = 464
프로그래밍 예제 : Person 클래스 = 465
파생 클래스 = 466
메소드 정의의 오버라이딩 = 469
오버라이딩과 오버로딩 = 470
final 변경자 = 470
프로그래밍 팁 : 여러분의 동료는 악의를 가지고 있다고 가정하라 = 472
UML 상속 다이어그램 = 473
7.2 상속을 이용한 프로그래밍 = 474
파생 클래스의 생성자 = 475
this 메소드(선택사항) = 477
오버라이딩된 메소드의 호출 = 477
프로그래밍 예제 : 다계층(Multilevel) 파생 클래스 = 478
오버로딩과 오버라이딩의 미묘한 차이(선택사항) = 483
프로그래밍 팁 : 객체는 하나 이상의 형을 가질 수 없다 = 485
프로그래밍 팁 : "이다."와 "가진다 "의 관계 = 488
Object 클래스 = 489
사례 연구 = 491
추상 클래스 = 502
인터페이스(선택사항) = 505
7.3 동적 결합과 다형성 = 508
동적 결합 = 508
형 검사 및 동적 결합 = 510
toSting의 동적 결합 = 512
다형성 = 512
7.4 그래픽 보조자료(선택사항) = 515
JApplet 클래스 = 516
JFrame 클래스 = 516
윈도우 이벤트와 윈도우 Listener = 520
ActionListener 인터페이스 = 521
프로그래밍 예제 : JFrame을 이용한 웃는 얼굴 = 521
사례 연구 : 문자 그림 = 491
요약 = 524
프로그래밍 과제 = 525
Chapter 08 예외처리
목표 = 530
전제 조건 = 530
8.1 기본적인 예외처리 = 531
자바에서의 예외 = 531
내장된 예외 클래스 = 543
ArrayIndexOutOfBoundsException(선택사항) = 544
8.2 예외 클래스 정의하기 = 544
예외 클래스 정의하기 = 544
프로그래밍 팁 : 예외 클래스를 정의할 때 = 551
8.3 예외 클래스 사용하기 = 552
예외 선언하기 = 552
받기를 필요로 하지 않은 예외 = 556
AssertionError 클래스(선택사항) = 558
다중 예외 던지고 받기 = 558
프로그래밍 팁 : 예외처리와 정보 숨기기 = 562
프로그래밍 팁 : 예외를 던져야 할 때 = 563
finally 블록(선택사항) = 565
예외 다시 던지기(선택사항) = 565
사례 연구 : 라인 중심 계산기 = 566
8.4 그래픽 보조자료(선택사항) = 581
GUI의 예외 = 581
프로그래밍 예제 : 예외들을 사용하는 JFrame = 581
요약 = 586
프로그래밍 과제 = 587
Chapter 09 스트림과 파일 I/O
목표 = 592
전제 조건 = 592
9.1 스트림과 파일 I/O의 개요 = 593
스트림의 개념 = 593
왜 입출력을 위해 파일을 사용하는가? = 593
텍스트 파일과 이진 파일 사이의 차이점 = 594
9.2 텍스트 파일 I/O = 595
PrintWriter로 텍스트 파일 출력 = 595
BufferedReader로 텍스트 파일 입력 = 607
프로그래밍 예제 : 키보드로부터 파일 이름 읽기 = 611
StringTokenizer 클래스 = 615
FileReader와 FileOutputStream 클래스 = 619
9.3 File 클래스 = 621
File 클래스 사용하기 = 621
9.4 기본적인 이진 파일 I/O = 624
ObjectOutputStream을 사용하여 이진 파일에 출력 = 625
writeUTF에 대한 약간의 상세 설명(선택사항) = 631
ObjectInputStream을 사용하여 이진 파일에서 입력 읽기 = 631
EOFException 클래스 = 637
FileInputStream과 FileOutputStream 클래스들 = 640
프로그래밍 예제 : 이진 데이터 파일 처리하기 = 641
9.5 객체 스트림을 사용하는 객체 I/O = 644
클래스 객체들의 이진 I/O = 644
Serializable 인터페이스 = 650
이진 파일에서 배열 객체들 = 651
9.6 그래픽 보조자료(선택사항) = 653
프로그래밍 예제 : 파일을 조작하기 위한 JFrame GUI = 653
요약 = 659
프로그래밍 과제 = 660
Chapter 010 동적 데이터 구조와 제너릭
목표 = 664
전제 조건 = 664
10.1 벡터 = 665
벡터 사용하기 = 666
프로그래밍 팁 : 벡터에 추가하기 = 672
매개변수화된 클래스와 제너릭 = 677
10.2 연결 데이터 구조 = 679
연결 목록 = 679
내부 클래스 = 690
노드 내부 클래스 = 691
반복자 = 692
프로그래밍 팁 : 내부와 외부 반복자 = 705
연결 목록의 예외처리 = 705
연결 목록의 변화 = 708
링크된 다른 데이터 구조 = 709
10.3 제너릭 = 710
제너릭의 기초 = 710
프로그래밍 예제 : 일반적인 연결 목록 = 713
요약 = 719
프로그래밍 과제 = 720
Chapter 011 재귀
목표 = 724
전제 조건 = 724
11.1 재귀의 기초 = 724
사례 연구 : 워드 연산 = 725
재귀의 동작 원리 = 730
재귀적 대 반복적 정의 = 736
값을 반환하는 재귀 메소드 = 736
11.2 재귀 프로그래밍하기 = 741
프로그래밍 팁 : 사용자가 원하는 값을 구할 때까지 요청하기 = 741
사례 연구 : 이진 탐색 = 743
프로그래밍 팁 : 문제를 일반화하기 = 752
프로그래밍 예제 : 병합 정렬 - 재귀 정렬 메소드 = 752
요약 = 758
프로그래밍 과제 = 759
Chapter 012 스윙을 이용한 윈도우 인터페이스
목표 = 764
전제 조건 = 764
12.1 배경 지식 = 765
GUI - 그래픽 사용자 인터페이스 = 765
이벤트 기반 프로그래밍 = 765
12.2 기본적인 스윙의 세부사항 = 767
프로그래밍 예제 : 간단한 윈도우 = 768
윈도우 리스너에 대해 좀 더 알아보기 = 776
화면 객체를 위한 크기 조절 장치 = 777
setVisible에 대해 자세히 살펴보기 = 778
프로그래밍 예제 : 첫 번째 스윙 프로그램의 진화된 버전 = 780
프로그래밍 예제 : 윈도우 색상 = 783
JFrame 클래스의 몇 가지 메소드 = 788
배치 관리자 = 790
12.3 버튼과 동작 리스너 = 796
프로그래밍 예제 : 버튼 추가하기 = 797
버튼 = 797
동작 리스너와 동작 이벤트 = 801
인터페이스 = 806
Model-View-Controller 패턴 = 808
12.4 Container 클래스 = 810
JPanel 클래스 = 811
Container 클래스 = 814
12.5 GUI를 위한 텍스트 I/O = 818
텍스트 영역과 텍스트 필드 = 818
프로그래밍 예제 : 텍스트 필드에 라벨붙이기 = 824
숫자의 입출력 = 827
프로그래밍 예제 : GUI 추가 장비 = 830
NumberFormatException 이해하기 = 833
요약 = 835
프로그래밍 과제 = 836
Chapter 013 애플릿과 HTML
목표 = 842
전제 조건 = 842
13.1 애플릿 = 843
애플릿 기초 = 843
애플릿 실행하기 = 847
프로그래밍 예제 : 가산기 애플릿 = 847
아이콘을 애플릿에 추가하기 = 850
13.2 HTML 소개 = 853
HTML 기초 = 853
프로그래밍 팁 : 간단한 HTML 문서 아웃라인 = 855
하이퍼링크 삽입하기 = 856
그림 보이기 = 861
프로그래밍 팁 : HTML은 하위 레벨 언어이다 = 861
13.3 HTML에서의 애플릿 = 862
HTML 문서에 애플릿 삽입하기 = 862
이전의 Applet 클래스(선택사항) = 865
애플릿과 보안 = 866
요약 = 868
프로그래밍 과제 = 869
Chapter 014 스윙
목표 = 874
전제 조건 = 874
14.1 메뉴 = 874
프로그래밍 예제 : 메뉴를 사용하는 GUI = 875
메뉴바, 메뉴, 그리고 메뉴 항목 = 875
중첩된 메뉴 = 880
14.2 GUI 예쁘게 만들기(그리고 더 기능적으로 만들기) = 881
아이콘 추가하기 = 882
메뉴 항목에 아이콘 추가하기 = 889
스크롤바를 위한 JScrollPane 클래스 = 889
테두리 추가하기 = 893
14.3 배치(Layout) 관리자 더 자세히 알기 = 900
BoxLayout 관리자 클래스 = 901
Struts와 Glue = 905
컴포넌트들 사이의 여백 설정하기 = 907
Box 컨테이너 클래스 = 907
CardLayout 관리자 = 911
14.4 내부 클래스 = 916
도움 클래스 = 916
14.5 이벤트와 리스너 더 자세히 알기 = 919
WindowListener 인터페이스 = 919
프로그래밍 예제 : 보이는 상태가 변하는 컴포넌트 = 930
GUI가 변하는 것에 대해 더 자세히 알기 = 933
14.6 스윙 클래스 계층구조 살펴보기 = 934
버튼, 메뉴, 그리고 추상화 버튼 = 934
요약 = 937
프로그래밍 과제 = 938
부록 = 940
찾아보기 = 978