목차
Chapter 1 자바를 시작하기 전에
1. 자바(Java Programming Language) = 2
1.1 자바란? = 2
1.2 자바의 역사 = 2
1.3 자바언어의 특징 = 3
1.4 JVM(Java Virtual Machine) = 4
2. 자바개발환경 구축하기 = 6
2.1 자바 개발도구(JDK)설치하기 = 6
2.2 Java API문서 설치하기 = 8
3. 자바로 프로그램작성하기 = 9
3.1 Hello.java = 9
3.2 자주 발생하는 에러와 해결방법 = 12
3.3 자바프로그램의 실행과정 = 13
3.4 주석(comment) = 14
Chapter 2 변수(Variable)
1. 변수(variable) = 18
1.1 변수란? = 18
1.2 변수의 선언 = 18
1.3 명명규칙(naming convention) = 19
2. 변수의 타입 = 20
2.1 기본형(primitive type) = 22
2.2 논리형 - boolean = 23
2.3 문자형 - char = 24
2.4 정수형 - byte, short, int, long = 28
2.5 실수형 - float, double = 32
3. 형변환 = 34
3.1 형변환(캐스팅, casting)이란? = 34
3.2 형변환 방법 = 34
3.3 기본형의 형변환 = 36
Chapter 3 연산자(Operator)
1. 연산자(operator) = 44
2. 단항연산자 = 46
2.1 증감 연산자 - ++, -- = 46
2.2 부호 연산자 - +, - = 49
2.3 비트전환 연산자 - ∼ = 49
2.4 논리부정 연산자 - ! = 51
3. 산술 연산자 = 52
3.1 사칙 연산자 - +, -, *, / = 52
3.2 나머지 연산자 - % = 61
3.3 쉬프트 연산자 - <<, >>, >>> = 62
4. 비교 연산자 = 66
4.1 대소비교 연산자 - <, >, <=, >= = 66
4.2 등가비교 연산자 - ==, != = 66
5. 논리 연산자 = 69
5.1 논리 연산자 - &&, || = 69
5.2 비트 연산자 - &, |, ^ = 70
6. 그 외의 연산자 = 72
6.1 삼항 연산자 - ? : = 72
6.2 대입 연산자 - =, op= = 73
Chapter 4 조건문과 반복문
1. 조건문 - if, switch = 80
1.1 if문 = 80
1.2 중첩 if문 = 83
1.3 switch문 = 85
2. 반복문 - for, while, do-while = 93
2.1 for문 = 93
2.2 while문 = 100
2.3 do-while문 = 102
2.4 break문 = 103
2.5 continue문 = 104
2.6 이름 붙은 반복문 = 105
Chapter 5 배열(Array)
1. 배열(array) = 114
1.1 배열(array)이란? = 114
1.2 배열의 선언 = 114
1.3 배열의 생성 = 115
1.4 배열의 초기화 = 116
1.5 배열의 활용 = 118
1.6 다차원 배열 = 126
1.7 가변 배열 = 129
1.8 배열의 복사 = 130
1.9 커맨드라인을 통해 입력받기 = 132
Chapter 6 객체지향 프로그래밍 Ⅰ
1. 객체지향언어 = 148
1.1 객체지향언어의 역사 = 148
1.2 객체지향언어 = 148
2. 클래스와 객체 = 149
2.1 클래스와 객체의 정의와 용도 = 149
2.2 객체와 인스턴스 = 151
2.3 객체의 구성요소 - 속성과 기능 = 151
2.4 인스턴스의 생성과 사용 = 153
2.5 클래스의 또 다른 정의 = 160
3. 변수와 메서드 = 164
3.1 선언위치에 따른 변수의 종류 = 164
3.2 클래스변수와 인스턴스변수 = 165
3.3 메서드 = 167
3.4 return문 = 169
3.5 메서드의 호출 = 171
3.6 JVM의 메모리구조 = 174
3.7 기본형 매개변수와 참조형 매개변수 = 177
3.8 재귀호출(recursive call) = 179
3.9 클래스메서드(static메서드)와 인스턴스메서드 = 182
3.10 클래스멤버와 인스턴스멤버간의 참조와 호출 = 184
4. 메서드 오버로딩(method overloading) = 186
4.1 메서드 오버로딩이란? = 186
4.2 오버로딩의 조건 = 187
4.3 오버로딩의 예 = 187
4.4 오버로딩의 장점 = 189
5. 생성자(constructor) = 191
5.1 생성자란? = 191
5.2 기본 생성자(default constructor) = 192
5.3 매개변수가 있는 생성자 = 194
5.4 생성자에서 다른 생성자 호출하기 - this(), this = 195
5.5 생성자를 이용한 인스턴스의 복사 = 198
6. 변수의 초기화 = 200
6.1 변수의 초기화 = 200
6.2 명시적 초기화(explicit initialization) = 202
6.3 초기화 블록(initialization block) = 202
6.4 멤버변수의 초기화 시기와 순서 = 205
Chapter 7 객체지향 프로그래밍 Ⅱ
1. 상속(inheritance) = 222
1.1 상속의 정의와 장점 = 222
1.2 클래스간의 관계 - 포함관계 = 228
1.3 클래스간의 관계 결정하기 = 229
1.4 단일상속(single inheritance) = 235
1.5 Object클래스 - 모든 클래스의 조상 = 236
2. 오버라이딩(overriding) = 238
2.1 오버라이딩이란? = 238
2.2 오버라이딩의 조건 = 239
2.3 오버로딩 vs. 오버라이딩 = 240
2.4 super = 241
2.5 super() - 조상 클래스의 생성자 = 243
3. package와 import = 247
3.1 패키지(package) = 247
3.2 패키지의 선언 = 248
3.3 import문 = 251
3.4 import문의 선언 = 251
4. 제어자(modifier) = 254
4.1 제어자란? = 254
4.2 static - 클래스의, 공통적인 = 254
4.3 final - 마지막의, 변경될 수 없는 = 255
4.4 생성자를 이용한 final 멤버변수 초기화 = 256
4.5 abstract - 추상의, 미완성의 = 257
4.6 접근 제어자(access modifier) = 258
4.7 접근 제어자를 이용한 캡슐화 = 259
4.8 생성자의 접근 제어자 = 262
4.9 제어자(modifier)의 조합 = 264
5. 다형성(polymorphism) = 265
5.1 다형성이란? = 265
5.2 참조변수의 형변환 = 268
5.3 instanceof연산자 = 273
5.4 참조변수와 인스턴스의 연결 = 275
5.5 매개변수의 다형성 = 278
5.6 여러 종류의 객체를 하나의 배열로 다루기 = 282
6. 추상클래스(abstract class) = 288
6.1 추상클래스란? = 288
6.2 추상메서드(abstract method) = 288
6.3 추상클래스의 작성 = 289
7. 인터페이스(interface) = 294
7.1 인터페이스란? = 294
7.2 인터페이스의 작성 = 294
7.3 인터페이스의 상속 = 295
7.4 인터페이스의 구현 = 295
7.5 인터페이스를 이용한 다중상속 = 298
7.6 인터페이스를 이용한 다형성 = 300
7.7 인터페이스의 장점 = 303
7.8 인터페이스의 이해 = 310
Chapter 8 예외처리(Exception Handling)
1. 예외처리(exception handling) = 330
1.1 프로그램 오류 = 330
1.2 예외처리의 정의와 목적 = 331
1.3 예외처리구문 - try-catch = 331
1.4 try-catch문에서의 흐름 = 334
1.5 예외 발생시키기 = 336
1.6 예외 클래스의 계층구조 = 337
1.7 예외의 발생과 catch블럭 = 340
1.8 finally블럭 = 345
1.9 메서드에 예외 선언하기 = 347
1.10 예외 되던지기(exception re-throwing) = 354
1.11 사용자정의 예외 만들기 = 355
Chapter 9 java.lang패키지
1. Object클래스 = 366
1.1 equals메서드 = 367
1.2 hashCode메서드 = 370
1.3 toString메서드 = 371
1.4 clone메서드 = 373
2. String클래스 = 376
2.1 String클래스의 특징 = 376
2.2 빈 문자열(empty string) = 382
2.3 String클래스의 생성자와 메서드 = 383
3. StringBuffer클래스 = 389
3.1 StringBuffer클래스의 특징 = 389
3.2 StringBuffer클래스의 생성자 = 389
3.3 StringBuffer인스턴스의 비교 = 390
3.4 StringBuffer클래스의 메서드 = 392
4. Math클래스 = 395
4.1 Math클래스 = 395
4.2 Math클래스의 메서드 = 395
5. wrapper클래스 = 397
5.1 wrapper클래스 = 397
5.2 Number클래스 = 402
Chapter 10 내부 클래스
1. 내부 클래스(inner class)란? = 414
2. 내부 클래스의 종류와 특징 = 415
3. 내부 클래스의 선언 = 415
4. 내부 클래스의 제어자와 접근성 = 416
5. 익명 클래스(anonymous class) = 421
Chapter 11 컬렉션 프레임웍과 유용한 클래스
1. 컬렉션 프레임웍(Collection Framework) = 428
1.1 컬렉션 프레임웍의 핵심 인터페이스 - List, Set, Map = 429
1.2 동기화(Synchronization) = 434
1.3 Vector와 ArrayList = 435
1.4 LinkedList = 450
1.5 Stack과 Queue = 458
1.6 Enumeration, Iterator, ListIterator = 467
1.7 HashSet = 477
1.8 TreeSet = 486
1.9 Comparator와 Comparable = 492
1.10 Hashtable과 HashMap = 495
1.11 TreeMap = 505
1.12 Properties = 508
1.13 컬렉션 클래스 정리 & 요약 = 514
2. 유용한 클래스들 = 515
2.1 Calendar와 Date = 515
2.2 Random = 528
2.3 정규식(Regular Expression) - Pattern. Match = 537
2.4 Scanner = 542
2.5 StringTokenizer = 555
3.형식화 클래스 = 561
3.1 DecimalFormat = 561
3.2 SimpleDateFormat = 566
3.3 ChoiceFormat = 570
3.4 MessageFormat = 572
4. 제네릭스(Generics) = 576
4.1 ArrayList<E> = 577
4.2 Iterator<E> = 582
4.3 Comparable<T>과 Collections.sort() = 583
4.4 HashMap<K, V> = 588
Chapter 12 쓰레드(thread)
1. 프로세스와 쓰레드 = 620
2. 쓰레드의 구현과 실행 = 622
3. start()와 run() = 626
4. 싱글쓰레드와 멀티쓰레드 = 630
5. 쓰레드의 우선순위 = 636
6. 쓰레드 그룹(thread group) = 638
7. 데몬 쓰레드(daemon thread) = 641
8. 쓰레드의 실행제어 = 645
9. 쓰레드의 동기화 = 661
9.1 synchronized를 이용한 동기화 = 661
9.2 wait()과 notify() = 670
Chapter 13 AWT(Abstract Window Toolkit)
1. AWT = 684
1.1 AWT란? = 684
1.2 AWT의 구성 = 686
1.3 컴포넌트(Component) = 688
1.4 컨테이너(Container) = 689
2. AWT의 주요 컴포넌트 = 690
2.1 Frame = 690
2.2 Button = 693
2.3 Choice = 696
2.4 List = 698
2.5 Label = 700
2.6 Checkbox = 701
2.7 TextField = 703
2.8 TextArea = 704
2.9 Scrollbar = 706
2.10 Canvas = 707
2.11 Panel = 708
2.12 ScrollPane = 709
2.13 Dialog = 710
2.14 FileDialog = 712
3. 그 외의 AWT 클래스 = 714
3.1 Font = 714
3.2 Color = 716
4. 메뉴만들기 = 718
4.1 메뉴를 구성하는 컴포넌트 = 718
4.2 PopupMenu = 721
5. 레이아웃 매니저 = 722
5.1 레이아웃 매니저를 이용한 컴포넌트 배치 = 722
5.2 BorderLayout = 723
5.3 FlowLayout = 725
5.4 GridLayout = 726
5.5 CardLayout = 728
6. 이벤트 처리(Event Handling) = 731
6.1 이벤트(Event)란? = 731
6.2 이벤트의 발생과 처리 = 731
6.3 이벤트 처리방법 = 732
6.4 Adapter클래스 = 739
7. AWT의 그래픽 = 758
7.1 paint()와 Graphics = 759
7.2 AWT쓰레드와 repaint() = 762
7.3 Image를 이용해서 이미지 출력하기 = 766
8. 애플릿(Applet) = 772
8.1 애플릿(Applet)이란? = 772
8.2 Applet의 생명주기(Life cycle)와 주요 메서드 = 775
8.3 Applet의 보안 제약(Security restriction) = 777
8.4 Applet과 HTML태그 = 778
Chapter 14 입출력(I/O)
1. 자바에서의 입출력 = 802
1.1 입출력이란? = 802
1.2 스트림(stream) = 802
1.3 바이트기반 스트림 - InputStream, OutputStream = 802
1.4 보조스트림 = 804
1.5 문자기반 스트림 - Reader, Writer = 805
2. 바이트기반 스트림 = 807
2.1 InputStream과 OutputStream = 807
2.2 ByteArrayInputStream과 ByteArrayOutputStream = 808
2.3 FileInputStream과 FileOutputStream = 812
3. 바이트기반의 보조스트림 = 814
3.1 FilterInputStream과 FilterOutputStream = 814
3.2 BufferedInputStream과 BufferedOutputStream = 815
3.3 DataInputStream과 DataOutputStream = 818
3.4 SequenceInputStream = 824
3.5 PrintStream = 826
4. 문자기반 스트림 = 830
4.1 Reader와 Writer = 830
4.2 FileReader와 FileWriter = 831
4.3 PipedReader와 PipedWriter = 833
4.4 StringReader와 StringWriter = 835
5. 문자기반의 보조스트림 = 836
5.1 BufferedReader와 BufferedWriter = 836
5.2 InputStreamReader와 OutputStreamWriter = 837
6. 표준입출력과 File = 839
6.1 표준입출력 - System.in, System.out, System.err = 839
6.2 표준입출력의 대상변경 - setOut(), setErr(), setIn() = 841
6.3 RandomAccessFile = 844
6.4 File = 847
7. 직렬화(Serialization) = 866
7.1 직렬화란? = 866
7.2 ObjectInputStream과 ObjectOutputStream = 867
7.3 직렬화가 가능한 클래스 만들기 - Serializable, transient = 869
7.4 직렬화가능한 클래스의 버전관리 = 875
Chapter 15 네트워킹(Networking)
1. 네트워킹(Networking) = 892
1.1 클라이언트/서버(client/sever) = 892
1.2 IP주소(IP address) = 894
1.3 InetAddress = 895
1.4 URL(Uniform Resource Location) = 897
1.5 URLConnection = 900
2. 소켓 프로그래밍 = 905
2.1 TCP와 UDP = 905
2.2 TCP소켓 프로그래밍 = 906
2.3 UDP소켓 프로그래밍 = 924
부록 - JDK 1.5에 추가된 기능
1. 향상된 for문
2. 오토박싱(autoboxing)
3. 타입에 안전한 열거형(Typesafe enums)
4. 가변인수(Varargs)
5. static import문
6. StringBuilder