목차
제1부 자바 기초 잡기
   1 자바 배우기 준비 ... 25
      1-1 자바의 소개 ... 25
      1-1 자바의 특징 ... 26
        [1] 단순함 ... 26
        [2] 객체지향 ... 27
        [3] 네트워킹 ... 27
        [4] 인터프리터 ... 28
        [5] 플랫폼 독립 ... 28
        [6] 이식성 ... 29
        [7] 멀티쓰레드(Multithreaded) ... 29
        [8] 강건함 ... 30
        [9] 보안성 ... 31
      1-3 자바 환경 만들기 ... 31
        [1] <M:MATH ? xmlns ... '"htt
        [2] <M:MATH ? xmlns ... '"htt
        [3] <M:MATH ? xmlns ... '"htt
        [1] KAWA 설치 및 사용하기 ... 40
        [2] Ultra Edit 설치 및 사용하기 ... 45
        [1] 자바 애플리케이션의 작성과 실행하기 ... 53
        [2] 자바 애플릿의 작성과 실행하기 ... 55
      1-4 자바 언어의 구조 ... 62
      1-5 기본적인 자바 애플리케이션의 구성 ... 64
      1-6 정리 ... 65
   2 자바의 구성 요서와 연산자 익히기 ... 66
      2-1 자바 프로그램의 구성 요소 ... 67
        [1] 주석문 ... 68
        [2] 식별자 ... 70
        [3] 키워드 ... 71
        [4] 기본 데이터 타입 ... 71
      2-2 연산자 ... 78
        [1] 산술 연산자 ... 80
        [2] 비트 연산자 ... 83
        [3] 쉬프트 연산자 ... 84
        [4] 관계 연산자 ... 87
        [5] 논리 연산자 ... 88
        [6] 대입 연산자 ... 89
        [7] 형 변환 연산자 ... 91
        [8] 3항 연산자 ... 94
        [9] 연산자 우선 순위 ... 96
      2-3 정리 ... 97
   3 조건문과 반복문 익히기 ... 98
      3-1 조건문 ... 99
        [1] if ∼ else문 ... 99
        [2] switch문 ... 102
      3-2 반복문 ... 104
        [1] for문 ... 104
        [2] while문 ... 105
        [3] do문 ... 107
        [4] break와 continue ... 108
      3-3 정리 ... 110
   4 기본 프로그래밍 연습하기 ... 111
      4-1 키보드로부터 입력받기 ... 111
      4-2 배열 사용하기 ... 111
      4-2 가장 큰 수와 작은 수를 출력하는 프로그램 ... 113
      4-4 작은 수부터 큰 수의 순서대로 출력하는 프로그램 ... 115
      4-5 2차원 행렬의 합, 차를 계산하는 프로그램 ... 117
      4-6 마방진을 만드는 프로그램 ... 122
      4-7 숫자 맞추기 프로그램 ... 125
      4-8 정리 ... 128
   5 객체 지향 개념 잡기 ... 129
      5-1 객체 지향은 과연 무엇인가? ... 129
        [1] 절차적 프로그래밍 ... 129
        [2] 객체 지향 프로그래밍 ... 130
      5-2 객체 지향 프로그래밍의 특징 ... 132
        [1] 객체와 클래스 ... 132
        [2] 추상화와 캡슐화 ... 133
        [3] 메시지 ... 135
        [4] 상속성 ... 136
        [5] 다형성 ... 137
      5-3 객체 지향 개념 연습하기 ... 138
        [1] 객체 추출 방법 ... 138
        [2] 클래스 생성 순서 ... 138
        [3] 상속성을 이용한 클래스 생성 ... 140
      5-4 정리 ... 141
   6 객체 지향 기초 프로그램 짜기 ... 142
      6-1 클래스의 선언 ... 143
      6-2 생성자와 소멸자 ... 146
      6-3 필드 ... 148
      6-4 메소드 ... 149
      6-5 인스턴스 ... 150
      6-6 데이터 전달 ... 152
      6-7 자판기 시뮬레이션 프로그램 짜기 ... 153
      6-8 복소수 프로그램 짜기 ... 162
      6-9 자동차 정보 출력 프로그램 짜기 ... 166
      6-10 텍스트 기반 사칙연산 계산기 프로그램 짜기 ... 171
      6-11 정리 ... 175
   7. 객체 지향 고급 프로그램 짜기 ... 176
      7-1 접근 수정자 ... 176
      7-2 단일 상속 클래스 ... 182
      7-3 다중 상속 클래스 : 인터페이스 ... 192
      7-4 추상 클래스 ... 199
      7-5 패키지 ... 203
      7-6 정리 ... 207
제2부 자바 프로그래밍 익히기
   8 예외 처리 다루기 ... 211
      8-1 예외란? ... 211
      8-2 예외 처리 방법 ... 214
        (1) try문 블록 ... 215
        (2) catch문 블록 ... 215
        (3) finally문 블록 ... 216
      8-3 예외 처리 메시지 보기 ... 222
      8-4 throw와 throws ... 227
      8-5 자신만의 예외 처리기 만들기 ... 230
      8-6 정리 ... 234
   9 쓰레드 익히기 ... 235
      9-1 쓰레드의 정의 ... 236
      9-2 쓰레드의 생성 ... 238
        [1] Thread 클래스 ... 239
        [2] Runnable 인터페이스 ... 243
      9-3 쓰레드의 종료 ... 246
      9-4 쓰레드의 상태 ... 246
      9-5 쓰레드 동기화 ... 247
      9-6 정리 ... 252
   10 애플릿 프로그램 짜기 ... 254
      10-1 애플릿(Applet)의 정의 ... 254
      10-2 애플릿 클래스 ... 255
        [1] init() 메소드 ... 256
        [2] start() 메소드 ... 256
        [3] stop() 메소드 ... 256
        [4] destroy() 메소드 ... 257
        [5] paint(Graphics g) 메소드 ... 257
      10-3 애플릿 만들기와 실행하기 ... 258
        [1] java.applet.Applet 사용하기 ... 258
        [2] 메소드 재정의하기 ... 259
        [3] 애플릿 컴파일하기 ... 260
        [4] HTML 작성하기 ... 260
        [5] 애플릿 실행하기 ... 261
        [6] 매개변수를 처리하는 자바 애플릿 ... 264
      10-4 고급 애플릿 프로그래밍 ... 272
        [1] 애플릿 그래픽 처리 메소드 : Graphics 클래스 ... 272
        [2] 애플릿 색깔 처리 메소드 : Color 클래스 ... 277
        [3] 애플릿 폰트 처리 메소드 : Font 클래스, FontMetris 클래스 ... 280
        [4] 애플릿 AWT 컨트롤 ... 282
        (1) 컴포넌트를 생성 ... 284
        (2) 컨테이너에 추가 ... 284
        [5] 이미지 처리 자바 애플릿 ... 287
        [6] 사운드 처리 자바 애플릿 ... 290
      10-5 정리 ... 293
   11 네트워킹 익히기 ... 295
      11-1 네트워크의 기본 요소 ... 295
        [1] TCP / IP 프로토콜 ... 295
        [2] HTTP 프로토콜 ... 297
      11-2 InetAddress 클래스 ... 298
        [1] InetAddress 객체 생성 ... 298
        [2] InetAddress 클래스의 메소드 ... 299
      11-3 URL 클래스 ... 299
        [1] URL 객체 생성 ... 299
        [2] URL 클래스의 메소드 ... 300
        (1) URL 정보 얻기 위한 메소드 ... 300
        (2) URL로부터 데이터 얻기 ... 300
      11-4 URLConnection 클래스 ... 302
        [1] URLConnection 객체 생성 ... 302
        [2] 데이터 전송 및 수신 ... 303
      11-5 HTTP 헤더 파싱 메소드 ... 306
      11-6 소켓 ... 308
        [1] TCP 소켓 : 클라이언트를 위한 Socket 클래스 ... 310
        [2] 소켓 : 클라이언트를 위한 Socket 클래스의 주요 생성자 ... 310
        [3] TCP 소켓 : 클라이언트를 위한 Socket 클래스의 주요 메소드 ... 311
        [4] TCP 소켓 : 서버를 위한 ServerSocket 클래스 ... 312
        [5] TCP 소켓 : 서버를 위한 ServerSocket 클래스의 생성자 ... 312
        [6] TCP 소켓 : 서버를 위한 ServerSocket 클래스의 주요 메소드 ... 313
        [7] UDP 소켓 ... 319
        [8] UDP 소켓 : DatagramPacket 클래스의 생성자 ... 320
        [9] UDP 소켓 : DatagramPacket 클래스의 메소드 ... 320
        [10] UDP 소켓 : DatagramSocket 클래스의 생성자 ... 321
        [11] UDP 소켓 : DatagramSocket 클래스의 메소드 ... 322
      11-7 정리 ... 327
   12 데이터베이스 익히기 ... 328
      12-1 데이터베이스의 정의 ... 328
      12-2 데이터베이스 관리 시스템(Database Management System) ... 328
      12-3 관계형 데이터베이스 ... 329
      12-4 SQL ... 330
        [1] 테이블 생성 ... 330
        [2] 테이블 삭제 ... 331
        [3] 테이블 삽입 ... 331
        [4] 데이터 수정 ... 332
        [5] 데이터 삭제 ... 333
        [6] 데이터 검색 ... 334
      12-5 JDBC의 정의 ... 336
      12-6 JDBC의 기능 ... 337
      12-7 JDBC와 ODBC의 관계 ... 338
      12-8 JDBC Framework ... 338
      12-9 JDBC 드라이버 타입 ... 339
      12-10 JDBC 사용하기 ... 341
        [1] 데이터베이스에 접속 ... 341
        [2] 드라이버 로딩 ... 341
        [3] 접속하기 ... 342
        [4] SQL 사용하기 ... 344
      12-11 JDBC 예제 프로그램 ... 348
      12-12 정리 ... 360
   13 자바빈즈 익히기 ... 361
      13-1 자바빈즈(JavaBeans)의 기본 개념 ... 361
      13-2 BeanBox 사용하기 ... 362
        [1] BeanBox 실행과 사용하기 ... 364
        [2] ToolBox에 Bean 추가하기 ... 366
        [3] BeanBox에 Bean 드롭하기 ... 366
        (1) BeanBox에 JellyBean 추가하기 ... 366
        (2) Bean 프로퍼티 편집하기 ... 368
        (3) 빈즈의 저장과 불러오기 ... 368
        [4] BeanBox의 기능 ... 368
        (1) File 메뉴 ... 369
        (2) Edit 메뉴 ... 370
        (3) View 메뉴 ... 370
      13-3 Bean 생성하기 ... 371
      13-4 간단한 Bean 작성하기 ... 376
        [1] 프로퍼티 구현하기 ... 377
        [2] BeanBox에서 이벤트 다루기 ... 380
        (1) BeanBox에서의 이벤트 보기 ... 382
        (2) BeanBox에서의 이벤트 가로채기 ... 383
        (3) 이벤트 아답터(Adapter) 클래스 ... 385
        (4) EventMoniter Bean) ... 386
        [3] 지속성 구현하기 : 시리얼라이제이션(Serialization) ... 387
        (1) 시리얼라이제이션 제어 ... 387
        (2) 기본 시리얼라이제이션 : Serializable 인터페이스 ... 388
        (3) 선택적인 시리얼라이제이션 : transient ... 389
        (4) 선택적인 시리얼라이제이션 : writeObject and readObject() ... 389
        (5) Externalizable 인터페이스 ... 391
      13-5 정리 ... 391
   14 JFC와 스윙 익히기 ... 392
      14-1 JF와 스윙 살펴보기 ... 392
        [1] JFC의 특징 ... 392
        [2] 스윙 API ... 393
        [3] Swing 패키지의 구성 ... 394
        [4] 스윙과 AWT ... 395
      14-2 자바 2 플랫폼에서 스윙 프로그래밍하기 ... 396
        [1] 스윙 프로그램 작성하기 ... 397
        [2] 스윙 프로그램 코드 보기 ... 397
        [3] 스윙 프로그램 실행하기 ... 399
      14-3 스윙 애플릿 실행하기 ... 400
      14-4 스윙 애플리케이션 코드 살펴보기 ... 403
        [1] 스윙 패키지 포함하기(Import) ... 405
        [2] 룩앤필 선택하기 ... 405
        [3] 최상위 레벨 컨테이너 생성 및 지정(setting up) ... 406
        [4] 버튼과 레이블 생성 및 지정 ... 406
        [5] 컨테이너에 컴포넌트 추가 ... 407
        [6] 컴포넌트 주위에 경계선 추가 ... 407
        [7] 이벤트 처리 ... 408
        [8] 보조적인 기술 제공 ... 408
      14-5 스윙 컴포넌트의 분류 ... 409
        [1] 최상위 레벨 컨테이너 ... 409
        [2] 범용 컨테이너 ... 409
        [3] 특수 목적용 컨테이너 ... 409
        [4] 기본 컴포넌트 ... 410
        [5] 언에디터블(uneditable) 디스플레이 컴포넌트 ... 411
        [6] 에디터블(editable) 디스플레이 컴포넌트 ... 411
      14-6 다양한 스윙 컴포넌트 활용하기 ... 413
        [1] JButton ... 413
        [2] JLabel ... 415
        [3] JCheckBox ... 417
        [4] JRadioButton ... 420
        [5] JToggleButton ... 423
        [6] JPanel ... 428
        [7] JComboBox ... 429
        [8] JList ... 431
        [9] 스윙 메뉴 ... 436
        [10] JToolTip ... 440
        [11] JTabbedPane ... 442
        [12] JTable ... 445
        [13] JTree ... 447
      14-7 정리 ... 451
   15 자바 입출력 익히기 ... 452
      15-1 입출력 스트림 ... 452
        [1] 입출력 관련 추상 클래스 ... 455
        [2] 메모리 입출력 스트림 ... 456
        [3] 파이프 입출력 스트림 ... 457
        [4] 파일 입출력 스트림 ... 458
        [5] 객체 시리얼라이제이션 입출력 스트림 ... 460
        [6] 데이터 변환 입출력 스트림 ... 460
        [7] 라인 카운트 입출력 스트림 ... 461
        [8] 프린팅 출력 스트림 ... 461
        [9] 버퍼링 입출력 스트림 ... 461
        [10] 필터링 입출력 스트림 ... 462
        [11] 피드백 입출력 스트림 ... 463
      15-2 자바 파일 입출력 ... 463
        [1] 파일 입력 ... 464
        [2] 파일 출력 ... 465
      15-3 파일 연결하기 ... 467
      15-4 데이터 변환 입출력 스트림 ... 469
      15-5 정리 ... 472
제3부 자바 프로젝트 개발하기
   16 윈도우 구성 프로그램 짜기 ... 475
      (1) 각 컴포넌트의 화면 출력 기법 ... 477
      (2) 파일 다이얼로그 윈도우를 오픈하는 코드 ... 484
      (3) 메뉴가 있는 윈도우 ... 487
   17 이미지 선명도 향상과 윤곽선 추출 프로그램 짜기 ... 493
      (1) 히스토그램 균일화 프로그램 코드 ... 494
   18 오디오 음질 향상 프로그램 짜기 ... 501
      (1) LowPassFilter.java 코드 ... 502
      (2) FIR.java 코드 ... 514
      (3) Au_Read_Write.java 코드 ... 519
      (4) AboutDialog.java 코드 ... 523
      (5) QuitDialog.java 코드 ... 525
부록
   부록 1. <M:MATH ? xmlns ... '"htt
      1. <M:MATH ? xmlns ... '"htt
      2. <M:MATH ? xmlns ... '"htt
      3. <M:MATH ? xmlns ... '"htt
      4. <M:MATH ? xmlns ... '"htt
   부록 2. 효율적인 자바 코딩 기법 익히기 ... 567
      1. 자바 코딩 스타일 ... 567
        1-1 일관된 코딩 스타일이 필요한 이유 ... 567
        1-2 코딩 스타일의 장점 ... 567
        1-3 코딩 스타일 ... 567
      2. 파일 이름 ... 568
      3. 파일 구성 ... 568
        3-1 Java 소스 파일 ... 568
        [1] Beginning Comments ... 569
        [2] Package와 Import 문장 ... 569
        [3] 클래스와 인터페이스 정의 ... 569
      4. 인덴테이션 ... 570
        4-1 Line 길이 ... 570
        4-2 Line Wrapping ... 570
      5. 주석문 ... 572
        5-1 구현 주석문 형식 ... 573
        [1] 블록 주석문 ... 573
        [2] 단일 라인 주석문 ... 573
        [3] Trailing Comments ... 574
        [4] End - of - Line Comments ... 574
        5-2 문서화 주석문 ... 574
      6. 선언문 ... 575
        6-1 Number Per Line ... 575
        6-2 배치 ... 575
        6-3 클래스와 인터페이스 선언 ... 576
      7. Statements ... 577
        7-1 단일문 ... 577
        7-2 복합문 ... 577
        7-3 Return 문 ... 578
        7-4 if, if - else, if else - if else 문 ... 578
        7-5 for 문 ... 579
        7-6 while 문 ... 579
        7-7 do - while 문 ... 579
        7-8 switch 문 ... 580
        7-9 try - catch 문 ... 580
      8. 공백 ... 581
        8-1 공백 라인 ... 581
        8-2 공백 문자 ... 581
      9. Naming Conventions ... 582
        9-1 패키지 ... 583
        9-2 클래스 ... 583
        9-3 인터페이스 ... 583
        9-4 메소드 ... 584
        9-5 변수 ... 584
        9-6 상수 ... 585
      10. 프로그래밍 습관 ... 585
        10-1 인스턴스 변수에 대한 접근 부여 ... 585
        10-2 클래스 변수와 클래스 메소드의 참조 ... 585
        10-3 상수 ... 585
        10-4 Variable Assignments ... 586
        10-5 기타 ... 586
        [1] Parentheses ... 586
        [2] 값 반환 ... 587
        [3] Ternary 연산자의 조건식 ... 587
        [4] Special Comments ... 587
      11. 코드 에제 ... 588
   부록 3. UML 관련 정의 ... 590
      1. 용어 및 표기법 ... 590
      2. 클래스간의 관계 식별 ... 591
      3. 사용 다이어그램 ... 593
닫기