목차
1. 자바와 SCJP의 소개
1.1 자바가 쓰이는 이유 = 16
1.1.1 플랫폼 독립성 = 16
1.1.2 멀티쓰레드(MultiThread)를 제공 = 16
1.1.3 가비지 콜렉션(Garbage Collection) 제공 = 17
1.1.4 개체 지향을 제공 = 17
1.2 자바의 구조 보기 = 17
1.2.1 자바 프로그램 종류 = 18
1.2.2 바이트 코드(Byte code) = 19
1.2.3 자바 가상 머신(JVN : Java Virtual Machine) = 19
1.3 JDK의 가족들 = 19
1.4 JDK의 설치 = 21
1.4.1 SDK1.4 다운로드 = 21
1.4.2 SDK1.4 프로그램 설치하기 = 24
1.5 환경변수의 설정 = 29
1.5.1 Window 95/98에서의 환경변수의 설정 = 29
1.5.2 Window 2000에서의 환경 설정 = 30
1.6 SCJP(Sun Certified Java Programmer)의 의미와 시험 범위 = 33
학습정리 = 35
2. 변수와 연산자
2.1 main 메소드 = 38
2.2 변수(variable) = 39
2.1.1 식별자(identifier) = 40
2.3 키워드(Keyword) = 41
2.4 자료형(data type) = 42
2.4.1 정수형(integer) = 42
2.4.2 실수형(real number) = 44
2.4.3 문자형(character) = 45
2.4.4 논리형(boolean) = 47
2.4.5 레퍼런스(reference) = 48
2.4.6 변수의 수명(scope rule) = 50
2.5 연산자(Operatior) = 51
2.5.1 대입 연산자(assignment operator) = 53
2.5.2 산술 연산자(Arithmetic Operator) = 53
2.5.3 혼합 대입 연산자(compound assignment operator) = 54
2.5.4 증감 연산자(increment/decrement operator) = 55
2.5.5 형 변환(type casting) = 56
2.5.6 관계 연산자(relational operator) = 60
2.5.7 조건 연산자(conditional operator) = 62
2.5.8 instanceof 연산자 = 65
2.5.9 비트 연산 = 66
2.5.10 논리 비트 연산자 = 67
2.5.11 쉬프트 연산자 = 70
2.5.12 쇼트컷 if-else문(Shortcut if-else Statement)==삼항 연산자 = 72
2.5.13 연산자 우선순위(operator precedence) = 73
예상 문제 = 74
해설 및 정답 = 82
학습 정리 = 89
3. 제어문, 배열, 엑세스 제어
3.1 분기문에 대한 이해 = 92
3.1.1 if-else문 = 92
3.1.2 switch-case문 = 94
3.2 반복문에 대한 이해 = 96
3.2.1 while문 = 96
3.2.2 do-while문 = 97
3.2.3 for문 = 98
3.2.4 break문 = 99
3.2.5 레이블 break문 = 100
3.2.6 continue문 = 102
3.2.7 레이블 continue문 = 103
3.3 배열(array) = 105
3.3.1 배열의 선언 = 105
3.3.2 배열의 메모리 할당 = 106
3.3.3 배열 요소의 이용 = 106
3.3.4 배열의 사용 = 107
3.3.5 다차원 배열 = 110
3.4 수정자(Modifier) = 112
3.5 default(접근 키워드가 없는 경우) = 112
3.6 public = 113
3.7 private = 113
3.8 protected = 114
3.9 final = 114
3.9.1 변수에서 final 키워드의 사용 = 114
3.9.2 메소드에서 final 키워드의 사용 = 115
3.9.3 클래스에서 final 키워드의 사용 = 115
3.10 static = 116
3.10.1 클래스 변수(class variable) = 116
3.10.2 클래스 메소드(class method) = 116
3.11 abstract = 117
3.11.1 추상 메소드 = 117
3.11.2 추상 클래스 = 117
3.12 native = 118
3.13 transient = 118
예상 문제 = 119
해설 및 정답 = 125
학습 정리 = 128
4. 클래스의 개념
4.1 객체 지향 프로그래밍의 개념(Object-Oriented Programming Concepts) = 130
4.2 객체 모델링 = 132
4.3 클래스 설계하기 = 132
4.4 클래스 선언하기 = 133
4.5 멤버 변수(Member Variable) 선언하기 = 133
4.6 메소드 추가하기 = 134
4.7 생성자(Constructor) = 136
4.8 객체 사용하기 = 139
4.9 default, public, private = 142
4.10 클래스 변수(class variable)와 클래스 메소드(class method) = 147
4.10.1 클래스 변수 = 147
4.10.2 클래스 메소드 = 148
4.10.3 클래스 메소드와 클래스 변수의 사용 예 = 149
4.11 상속(Inheritance)의 개념 = 152
4.12 상속을 위한 extends 키워드 = 153
4.13 this와 super 키워드 = 159
4.13.1 this 키워드의 적용 = 159
4.13.2 super 키워드의 적용 = 163
4.14 중첩 클래스(Nested Class) = 166
4.15 인터페이스(interface) = 168
4.15.1 인터페이스의 실제 = 169
4.15.2 인터페이스 상속 = 172
4.16 abstract 고급 = 173
4.16.1 추상 메소드 = 174
4.16.2 추상 클래스 = 174
4.17 익명 클래스(Anonymous) = 176
4.18 "is a" 관계와 "has a" 관계 = 178
4.18.1 "is a" = 178
4.18.2 "has a" = 178
4.19 메소드 오버로딩(overloading) = 179
4.20 메소드 오버라이딩(Overriding) = 179
4.21 패키지(package) = 180
예상 문제 = 182
해설 및 정답 = 192
학습 정리 = 198
5. 예외 처리
5.1 예외(Exception)에 대한 이해 = 200
5.1.1 예외란? = 200
5.1.2 오류란? = 200
5.1.3 예외 처리 원리 = 200
5.1.4 Exception 클래스의 계층구조도 = 201
5.2 try/catch에 의한 예외 처리 = 202
5.2.1 try 블록 = 202
5.2.2 catch 블록 = 202
5.2.3 다중 catch 블록 = 206
5.3 finally의 사용법 = 208
5.4 throws/throw의 사용 = 209
5.4.1 throws의 사용 = 209
5.4.2 throw의 사용 = 210
예상 문제 = 211
해설 및 정답 = 214
학습 정리 = 215
6. java.io 패키지
6.1 스트림? = 218
6.1.1 바이트 스트림(byte-steam) 입출력 = 218
6.1.2 문자 스트림(character-stream) 입출력 = 220
6.2 입력에 사용되는 클래스 = 221
6.3 입력 스트림(InputStream) & 리더(Reader) 클래스 = 222
6.3.1 InputStream 클래스 = 222
6.3.2 Reader 클래스 = 224
6.4 파일 입력 스트림(FileInputStream) & 파일 리더(FileReader) 클래스 = 225
6.4.1 파일 입력 스트림(FileInputStream) = 225
6.4.2 파일 리더(FileReader) 클래스 = 227
6.5 필터 입력 스트림(FilterInputStream) 클래스 = 228
6.6 버퍼 입력 스트림(BufferedInputStream) & 버퍼 리더(BufferedReader) 클래스 = 229
6.7 자료 입력 스트림(DataInputStream) = 230
6.8 출력에 사용되는 클래스 = 231
6.9. 출력 스트림(OutputStream) & Writer 클래스 = 231
6.9.1 OutputStream 클래스 = 232
6.9.2 Writer 클래스 = 232
6.10 파일 출력 스트림(FileOutputStream) & FileWriter 클래스 = 233
6.10.1 FileOutputStream 클래스 = 233
6.10.2 FileWriter 클래스 = 235
6.11 버퍼 출력 스트림(BufferedOutputStream) = 235
6.12 자료 출력 스트림(DataOutputStream) = 236
6.13 파일(File) & 임의 접근 파일(RandomAccessFile) 클래스 = 238
6.13.1 File 클래스 = 238
6.13.2 RandomAccessFile 클래스 = 241
예상 문제 = 245
해설 및 정답 = 250
학습 정리 = 252
7. java.util 패키지
7.1 Collection, Set List 그리고 Map의 관계 = 254
7.2 Collection 인터페이스 = 255
7.3 Set과 List 그리고 Map 인터페이스 = 255
7.3.1 Set 예제 = 256
7.3.2 List 예제 = 256
7.3.3 Map = 257
7.4 java.util.Vector 클래스 = 257
7.5 java.util.Hashtable 클래스 = 262
예상 문제 = 267
해설 및 정답 = 267
8. java.lang 패키지
8.1 java.lang.Object 클래스 = 270
8.1.1 equals() 메소드 = 270
8.1.2 toString() 메소드 = 275
8.2 java.lang.String 클래스 = 277
8.3 java.lang.StringBuffer 클래스 = 282
8.4 Math 클래스 = 283
8.5 랩퍼(Wrapper) 클래스 = 285
예상 문제 = 290
해설 및 정답 = 300
학습 정리 = 304
9. AWT
9.1 AWT를 이해하기 = 306
9.1.1 AWT의 클래스 구조 = 306
9.1.2 비주얼 컴포넌트(component)와 컨테이너(container) = 307
9.2 Label 컴포넌트 = 308
9.3 Button 컴포넌트 = 311
9.4 Checkbox 컴포넌트 = 313
9.4.1 라디오형 Checkbox 사용 = 315
9.5 Choice 컴포넌트 = 317
9.6 List 컴포넌트 = 319
9.7 TextField 컴포넌트 = 321
9.8 TextArea 컴포넌트 = 323
9.9 Scrollbar 컴포넌트 = 324
9.10 Canvas 컴포넌트 = 325
9.11 컨테이너와 레이아웃 매니저 = 327
9.11.1 컨테이너 = 327
9.11.2 레이아웃 메니저(Layout manager) = 329
9.12 FlowLayout = 329
9.13 BorderLayout = 332
9.14 GridLayout = 335
9.15 CardLayout = 337
9.16 GridBagLayout = 338
9.17 이벤트 처리 = 340
9.18 이벤트의 개요 = 340
9.18.1 ActionEvent 처리 예제 1 = 341
9.18.2 ActionEvent 처리 예제 2 = 343
9.19 이벤트의 종류 = 344
9.20 로우레벨 이벤트(low-level event) = 345
9.20.1 로우레벨 리스너(low-level listener) = 346
9.20.2 어댑터 클래스(adapter class) = 349
9.21 시멘틱 이벤트(semantic event) = 351
9.21.1 시멘틱 이벤트 리스너(semantic event listener) = 351
예상 문제 = 356
해설 및 정답 = 359
학습 정리 = 361
10. 쓰레드
10.1 쓰레드 개요 = 364
10.2 쓰레드 클래스 사용법 = 365
10.2.1 Thread 클래스로부터 직접 상속받아 쓰레드를 생성 = 365
10.3 다중 쓰레드(Multithread) = 366
10.3.1 멀티태스킹(Multitasking) = 366
10.3.2 멀티쓰레딩(Multithreading) = 367
10.4 쓰레드 우선순위(Thread Priority) = 367
10.5 쓰레드 생성과 종료 그리고 생명주기 = 368
10.5.1 쓰레드의 생성 = 369
10.5.2 쓰레드 종료 = 371
10.5.3 쓰레드 생명주기(life cycle) = 371
10.6 동기화(Synchronization) = 372
10.6.1 경쟁 조건 = 373
10.6.2 상호 배제 = 375
예상 문제 = 377
해설 및 정답 = 383
학습 정리 = 385
11. 가비지 콜렉션
11.1 가비지 콜렉션이란? = 388
11.2 gc() 메소드 = 388
11.3 가비지 콜렉션의 사용 예제 = 389
예상 문제 = 390
해설 및 정답 = 392
학습 정리 = 393
12. 스윙
12.1 스윙에 대한 소개 = 396
12.1.1 스윙의 특징 = 396
12.1.2 스윙과 AWT의 비교 = 397
12.1.3 스윙의 클래스 구조 = 398
12.2. 윈도우창 만들기 = 401
12.2.1 JFrame = 401
12.3 기본 컴포넌트 404
12.3.1 JLabel = 405
12.3.2 JButton = 408
12.3.3 JRadioButton = 411
12.3.4 JCheckBox = 414
12.3.5 JList = 417
12.3.6 JComboBox = 419
12.3.7 JTextField = 421
12.3.8 JPasswordField = 423
12.3.9 JTextArea = 425
12.3.10 JSlider = 427
12.3.11 JProgressBar = 430
12.4 장식하기 = 432
12.4.1 테두리의 설정 = 432
12.4.2 풍선 도움말의 사용 = 434
12.5 패널 = 436
12.5.1 JPanel = 436
12.5.2 JScrollPane = 439
12.5.3 JTabbedPane = 441
12.6 메뉴와 툴바 = 444
12.6.1 메뉴 생성 = 444
12.6.2 메뉴 이벤트 처리 = 450
12.6.3 단축키 설정하기 = 456
12.6.4 JCheckBoxMenuItem과 JRadioButtonMenuItem = 461
12.6.5 JPopupMenu = 466
12.6.6 툴바 생성 = 469
13. 애플릿
13.1 애플릿 프로그래밍의 개요 = 476
13.1.1 HTML(HyperText Markup Language)에 대한 소개 = 476
13.1.2 애플릿의 기초 = 478
13.2 AWT 애플릿(AWT Applet) = 481
부록
부록 1. Edit Plus 프로그램 설치와 설정하기 = 488
부록 2. Sun One Studio 4, Community Edition = 498
부록 2.1. 인터넷에서 구하기 = 499
부록 2.2. 수행 해 보기 = 508
부록 3. SCJP 교육센터 = 515
부록 4. SCJP 응시 방법 = 515
머리말 = 3
찾아보기 = 525