000 | 01126namccc200385 k 4500 | |
001 | 000045413461 | |
005 | 20100806025437 | |
007 | ta | |
008 | 080108s2007 ggk 001a kor | |
020 | ▼a 9788960770072 | |
040 | ▼a 211009 ▼c 211009 ▼d 211009 | |
041 | 1 | ▼a kor ▼h eng |
082 | 0 4 | ▼a 005.13/3 ▼2 22 |
090 | ▼a 005.133 ▼b J41 2007r3 | |
245 | 2 0 | ▼a (The)Java language specification / ▼d James Gosling [외] 지음 ; ▼e 허진영 [외] 옮김. |
260 | ▼a 의왕 : ▼b 에이콘 , ▼c 2007. | |
300 | ▼a xvii, 667 p. ; ▼c 26 cm. | |
500 | ▼a 색인수록 | |
500 | ▼a 공저자: Billy Joy, Guy Steele, Gilad Bracha | |
500 | ▼a 공역자: 최선재, 이상민, 이정룡 | |
500 | ▼a 감수자: 김형준 | |
500 | ▼a 원서의 총서명: Java series | |
500 | ▼a 원서의 3판을 번역함. | |
650 | 0 | ▼a Java (Computer program language) |
700 | 1 | ▼a Gosling, James , ▼d 1955- ▼0 AUTH(211009)142888 |
700 | 1 | ▼a Joy, Billy |
700 | 1 | ▼a Steele, Guy |
700 | 1 | ▼a Bracha, Gilad ▼0 AUTH(211009)38298 |
700 | 1 | ▼a 허진영 , ▼e 역 |
700 | 1 | ▼a 최선재 , ▼e 역 |
700 | 1 | ▼a 이상민 , ▼e 역 ▼0 AUTH(211009)100742 |
700 | 1 | ▼a 이정룡 , ▼e 역 |
945 | ▼a KINS | |
949 | ▼a Java series |
소장정보
No. | 소장처 | 청구기호 | 등록번호 | 도서상태 | 반납예정일 | 예약 | 서비스 |
---|---|---|---|---|---|---|---|
No. 1 | 소장처 중앙도서관/제2자료실(3층)/ | 청구기호 005.133 J41 2007r3 | 등록번호 111458512 | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
No. 2 | 소장처 과학도서관/Sci-Info(1층서고)/ | 청구기호 005.133 J41 2007r3 | 등록번호 121163472 | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
No. | 소장처 | 청구기호 | 등록번호 | 도서상태 | 반납예정일 | 예약 | 서비스 |
---|---|---|---|---|---|---|---|
No. 1 | 소장처 중앙도서관/제2자료실(3층)/ | 청구기호 005.133 J41 2007r3 | 등록번호 111458512 | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
No. | 소장처 | 청구기호 | 등록번호 | 도서상태 | 반납예정일 | 예약 | 서비스 |
---|---|---|---|---|---|---|---|
No. 1 | 소장처 과학도서관/Sci-Info(1층서고)/ | 청구기호 005.133 J41 2007r3 | 등록번호 121163472 | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
컨텐츠정보
책소개
자바 언어를 만든 사람들이 직접 쓴 자바 프로그래밍 언어의 기술 참고서적의 결정판. 언어 구조에 대한 정확한 의미를 알고자 하는 독자에게 유용한 지침을 제공한다.
자바 프로그래밍 언어에 대한 정확하고 상세한 설명을 제공한다. 2판 이후 새롭게 추가된 기능인 제네릭, 어노테이션, 단언문, 박싱/언박싱, 열거형, for-each 구문, 가변 길이 매개변수를 포함하는 메소드, 정적 임포트 등에 대한 완벽한 설명을 제공한다.
자바 프로그래밍 언어는 범용적이고 병렬 수행이 가능한 클래스 기반의 객체지향 언어로, 많은 프로그래머들이 언어를 능숙하게 다룰 수 있도록 매우 단순하게 설계되었다. 자바 프로그래밍 언어는 C나 C++와 관련이 있지만 다소 다르게 체계화되었다. C와 C++의 일부 요소는 제외되었고, 다른 언어의 사상도 일부 포함되었다. 자바는 연구용 언어가 아니고 상용 언어이다. 호어(C. A. R. Hoare)가 발표한 언어 설계에 대한 논문을 토대로 최신 기술이나 검증되지 않은 부분은 배제했다.
자바 프로그래밍 언어는 타입에 대한 규칙이 엄격하다. 따라서 컴파일 시 에러(컴파일할 때 확인할 수 있으며 반드시 검증해야 하는 에러)와 실행 시 발생하는 에러를 확실히 구분한다. 컴파일은 프로그램을 CPU와 같은 하드웨어 아키텍처에 독립적인 바이트 코드 형태로 번역하는 작업을 의미한다. 실행은 프로그램을 수행하기 위해서 필요한 클래스를 로딩하고 링크하며, 선택적으로 기계어를 생성하고 동적으로 프로그램을 최적화하고, 프로그램을 수행하는 작업을 의미한다.
자바 프로그래밍 언어는 기계 표현의 세부 내용이 드러나지 않는 고급 언어이다. 명시적인 메모리 해제(C의 free나 C++의 delete와 같은) 작업 시 일어날 수 있는 문제를 피하기 위해서 가비지 콜렉터(GC, Garbage Collector)라는 자동 메모리 관리 기능을 사용한다. 실행 시 멈추는 현상을 최소화 하도록 고성능 가비지 콜렉터를 구현하여 시스템 프로그래밍과 실시간 응용 프로그램을 지원할 수 있다. 자바는 프로그램이 지정되지 않은 방식으로 수행되는 것을 방지하는 구조이다. 예를 들면 인덱스 점검을 하지 않고 배열에 접근하는 작업은 불가능하다.
자바 프로그래밍 언어는 일반적으로 바이트 코드 명령어 집합과 바이너리 형식으로 컴파일 된다. 이에 대한 내용은 『The Java™ Virtual Machine Specification, Second Edition』 (Addison-Wesley, 1999)에 잘 정리되어 있다.
이 책의 구성
2장에서는 자바의 어휘 및 구문 문법을 표현하기 위한 표기법(notation)에 대해서 설명한다.
3장에서는 C와 C++에 기반을 둔 자바 언어의 어휘 구조에 대해서 설명한다.
4장에서는 타입, 값, 변수에 대해서 설명한다.
5장에서는 형변환 및 수치 확장에 대해서 설명한다.
6장에서는 선언과 명명규칙, 의미 있는 이름을 정하는 방법에 대해서 설명한다.
7장에서는 패키지로 구성되는 프로그램의 구조에 대해 설명한다.
8장에서는 클래스에 대해서 알아본다.
9장에서는 인터페이스 타입에 대해서 알아본다.
10장에서는 배열에 대해 설명한다.
11장에서는 예외에 대해서 다룬다.
12장에서는 프로그램 수행 시 일어나는 동작에 대해서 알아본다.
13장에서는 바이너리 호환성에 대해서 알아본다.
14장에는 C와 C++에 기반을 둔 블록과 문장에 대해서 알아본다.
15장에서는 표현식에 대해 알아본다.
16장에서는 자바 언어에서 지역변수가 사용되기 전에 초기화 되어야 하는 것을 보장하는 방법에 대해서 자세히 다룬다.
17장에서는 Mesa라는 모니터 기반 병행처리 프로그래밍 언어에 기초한 스레드(thread)와 잠금(lock)에 대해서 알아본다.
18장에서는 구문 문법을 정리한다.
정보제공 :

저자소개
James Gosling(지은이)
썬 사의 개발 생산성 그룹의 CTO이며 자바 프로그래밍 언어의 창시자이고 컴퓨터 산업의 가장 주목받는 프로그래머이다. 그는 1996년 "Programming Excellence Award"의 수상자이다. 그는 과거 카네기 멜론 대학에서 Andrew 프로젝트를 수행했고 이를 통해 박사학위를 받았으며, 썬의 네트워크 확장 윈도 시스템인 NeWS를 개발했다.
Bill Joy(지은이)
Sun Microsystems의 공동 설립자이며, 하드웨어와 소프트웨어의 아키텍트로 일하면서 2003년 9월까지 회사의 기술 전략을 이끌었다. 그는 UNIX®의 Berkeley 버전 창시자로 잘 알려져 있으며 이를 통해 1993년 USENIX로부터 lifetime achievement award를 수상했다. 또한 1986년에는 ACM Grace Murray Hopper Award를 수상했다. Joy는 자바 프로그래밍 언어를 구현하는 데 중요한 역할을 수행했다. 그는 2005년 1월에 KPCB의 파트너가 되었다.
Guy L.Steele jr.(지은이)
썬 마이크로시스템즈 연구소에 근무하는 동료이며, 언어 설계 및 구현, 병렬 알고리즘, 컴퓨터 수학 연구에 대한 책임을 맡고 있다. 그는 Scheme 프로그래밍 언어의 공동 창시자이며 저서로는 『C programming language』(Samuel Harbison 공저), 『Common Lisp programming language』가 있다. Steele는 1988년 ACM Grace Murray Hopper Award를 수상했으며, 1994년 ACM , 2001년에는 National Academy of Engineering, 2002년에는 American Academy of Arts and Science의 정식 회원이 되었다. 그는 또한 1996년 ACM SIGPLAN Programming Laguages Achievement Award를 수상했으며, 2005년에는 Dr.Dobb's Journal의 Excellence in Programming Award를 수상했다.
Gilad Bracha(지은이)
썬 마이크로시스템즈에서 컴퓨터 논리이론가로 근무하며 객체지향언어영역의 연구를 수행하고 있다. 썬에 근무하기 이전에 그는 Strongtalk,™ the Animorphic Smalltalk System에서 근무했다. 그는 이스라엘의 Ben Gurion 대학에서 수학과 컴퓨터 과학에 관한 학위를 받았으며, University of Utah에서 컴퓨터 과학 박사학위를 받았다.
최선재(지은이)
이상민(옮긴이)
삼성SDS에서 개발을 시작하여 NAVER, NHN 등의 회사에서 일했다. 《자바의 신》, 《자바 성능 튜닝 이야기》 등 다수의 IT 서적을 집필하였다. 지금은 국내 최고의 스마트 통합 주차 회사인 파킹 클라우드에서 개발 총괄 이사로 일하고 있다.
이정룡(옮긴이)
연세대학교 화학공학과를 졸업하였고 현재 삼성 SDS 인트라넷 개발파트에서 기업내 엔터프라이즈 포탈 구축 및 운영을 담당하고 있다. 최근에는 애자일 방법론을 도입하여 포탈 기반의 워크플레이스를 개발 중에 있으며 주요 관심분야는 애자일 개념을 기반으로 하는 워크플로우 시스템과 분산 환경 기반의 고성능 캐시서버 구축이다. 『Java Specification 3rd Edition』(에이콘, 2007)을 번역했다.
허진영(옮긴이)
김형준(감수)
J2EE 아키텍처와 도메인 모델 분야를 연구하면서 『J2EE 컴포넌트 만들기』, 『자바 파일럿 프로젝트 실무』 등을 집필하였으며 최근 4년 동안은 하둡이나 NoSQL 같은 분산 컴퓨팅, 클라우드 컴퓨팅 분야를 연구하며 실제 서비스에 적용하고 있다. 또한 구글의 데이터 관리 시스템인 Bigtable을 구현하고 있는 오픈 소스 프로젝트인 cloudata(www.cloudata.org) 프로젝트를 진행 중이다. SDS, NHN을 거쳐 지금은 클라우드 기반 검색 전문 업체인 그루터(gruter)에서 클라우드 컴퓨팅 컨설팅 업무를 수행하고 있다.

목차
목차 서문 = ⅴ 2판 서문 = ⅷ 3판 서문 = ⅹ 저자 소개 = xiii 옮긴이의 말 = xiv 옮긴이 소개 = xvi 감수자 소개 = xvii 1장 소개 = 1 1.1 예제 프로그램 = 5 1.2 표기법 = 5 1.3 이미 정의되어 있는 클래스, 인터페이스와의 관계 = 6 1.4 참고 문헌 = 6 2장 문법 = 8 2.1 문맥 자유 문법 = 8 2.2 어휘 문법 = 8 2.3 구문 문법 = 9 2.4 문법 표기법 = 9 3장 어휘 구조 = 13 3.1 유니코드 = 13 3.2 어휘 번역 = 14 3.3 유니코드 확장문자 = 15 3.4 라인 종결자 = 16 3.5 입력 요소 및 토큰 = 17 3.6 공백 = 18 3.7 주석 = 18 3.8 식별자 = 19 3.9 예약어 = 21 3.10 리터럴 = 21 3.10.1 정수 리터럴 = 22 3.10.2 부동 소수점 리터럴 = 24 3.10.3 Boolean 리터럴 = 27 3.10.4 문자 리터럴 = 27 3.10.5 문자열 리터럴 = 28 3.10.6 문자 리터럴과 문자열 리터럴의 확장 문자열 = 30 3.10.7 Null 리터럴 = 31 3.11 구분자 = 32 3.12 연산자 = 32 4장 타입, 값, 변수 = 33 4.1 타입의 종류와 값 = 34 4.2 기본자료형과 값 = 35 4.2.1 정수형과 값 = 36 4.2.2 정수 연산 = 36 4.2.3 부동소수점형, 형식, 값 = 38 4.2.4 부동소수점 연산자 = 40 4.2.5 boolean형과 boolean 값 = 43 4.3 참조자료형과 값 = 44 4.3.1 객체 = 45 4.3.2 Object 클래스 = 48 4.3.3 String 클래스 = 49 4.3.4 참조자료형이 동일할 경우 = 49 4.4 타입 변수 = 50 4.5 매개변수화 타입 = 52 4.5.1 타입 인자와 와일드카드 = 53 4.5.2 매개변수화 타입의 구성 요소와 생성자 = 56 4.6 타입 삭제 = 56 4.7 구체화 가능한 타입 = 57 4.8 원형 타입 = 58 4.9 교차 타입 = 62 4.10 하위타입화 = 63 4.10.1 기본자료형 사이의 하위타입화 = 63 4.10.2 클래스와 인터페이스 타입 사이의 하위타입화 = 64 4.10.3 배열 타입의 하위타입화 = 65 4.11 타입의 사용 = 65 4.12 변수 = 67 4.12.1 기본자료형 변수 = 67 4.12.2 참조자료형 변수 = 67 4.12.3 변수의 종류 = 69 4.12.4 final 변수 = 71 4.12.5 변수의 디폴트값 = 72 4.12.6 타입, 클래스, 인터페이스 = 73 5장 형변환과 확장 = 77 5.1 형변환의 종류 = 80 5.1.1 식별 형변환 = 80 5.1.2 기본자료형 확장 형변환 = 80 5.1.3 기본자료형 축소 형변환 = 82 5.1.4 기본자료형 확장 및 축소 형변환 = 84 5.1.5 참조자료형 확장 형변환 = 85 5.1.6 참조자료형 축소 형변환 = 85 5.1.7 박싱 형변환 = 86 5.1.8 언박싱 형변환 = 88 5.1.9 비확인 형변환 = 89 5.1.10 캡쳐 형변환 = 89 5.1.11 문자열 형변환 = 92 5.1.12 형변환 금지 = 92 5.1.13 값 집합 형변환 = 92 5.2 할당 형변환 = 93 5.3 메소드 호출 형변환 = 99 5.4 문자열 형변환 = 101 5.5 캐스팅 형변환 = 101 5.6 수치 확장 = 108 5.6.1 단항 수치 확장 = 108 5.6.2 이항 수치 확장 = 109 6장 이름 = 113 6.1 선언 = 114 6.2 이름과 식별자 = 115 6.3 선언의 유효범위 = 117 6.3.1 선언 감춤 = 119 6.3.2 모호한 선언 = 121 6.4 멤버와 상속 = 122 6.4.1 타입 변수의 멤버, 매개변수화 타입, 원형 타입, 교차 타입 = 122 6.4.2 패키지의 멤버 = 122 6.4.3 클래스 타입의 멤버 = 123 6.4.4 인터페이스 타입의 멤버 = 124 6.4.5 배열 타입의 멤버 = 125 6.5 이름의 의미 결정 = 126 6.5.1 문맥에 따른 이름의 구문 분류 = 127 6.5.2 문맥상 모호한 이름의 재분류 = 129 6.5.3 패키지명의 의미 = 131 6.5.4 패키지_또는_타입명의 의미 = 131 6.5.5 타입명의 의미 = 132 6.5.6 표현식명의 의미 = 134 6.5.7 메소드명의 의미 = 137 6.6 접근 제어 = 138 6.6.1 접근 가능성 결정 = 138 6.6.2 protected 접근 = 139 6.6.3 접근 제어 예제 = 140 6.6.4 public과 비 public 클래스 접근 예제 = 141 6.6.5 필드, 메소드, 생성자의 디폴트 접근 예제 = 142 6.6.6 public 필드, 메소드, 생성자 접근 예제 = 143 6.6.7 protected 필드, 메소드, 생성자 접근 예제 = 143 6.6.8 private 필드, 메소드, 생성자 접근 예제 = 144 6.7 완전한정명과 정규명 = 145 6.8 명명 규칙 = 146 6.8.1 패키지명 = 147 6.8.2 클래스명과 인터페이스명 = 147 6.8.3 타입 변수명 = 148 6.8.4 메소드명 = 149 6.8.5 필드명 = 150 6.8.6 상수명 = 150 6.8.7 지역변수명과 매개변수명 = 151 7장 패키지 = 153 7.1 패키지 멤버 = 153 7.2 패키지를 위한 호스트 지원 = 154 7.2.1 파일 시스템에 패키지 저장하기 = 155 7.2.2 데이터베이스에 패키지 저장하기 = 156 7.3 컴파일 단위 = 157 7.4 패키지 선언 = 158 7.4.1 기명 패키지 = 158 7.4.2 무기명 패키지 = 159 7.4.3 패키지의 유효성 = 159 7.4.4 패키지 선언의 유효범위 = 160 7.5 임포트 선언 = 160 7.5.1 단일 타입 임포트 선언 = 161 7.5.2 요청 타입 임포트 선언 = 163 7.5.3 단일 정적 임포트 선언 = 163 7.5.4 요청 정적 임포트 선언 = 165 7.5.5 자동 임포트 = 165 7.5.6 비정상적인 예 = 165 7.6 최상위 타입 선언 = 166 7.7 유일한 패키지명 = 170 8장 클래스 = 173 8.1 클래스 선언 = 174 8.1.1 클래스 제한자 = 175 8.1.2 제네릭 클래스와 타입 매개변수 = 178 8.1.3 내부 클래스와 인클로징 인스턴스 = 181 8.1.4 상위클래스와 하위클래스 = 183 8.1.5 상위인터페이스 = 185 8.1.6 클래스 바디와 멤버 선언 = 189 8.2 클래스 멤버 = 190 8.2.1 상속의 예 = 191 8.3 필드 선언 = 195 8.3.1 필드 제한자 = 197 8.3.2 필드 초기화 = 200 8.3.3 필드 선언의 예 = 205 8.4 메소드 선언 = 210 8.4.1 형식 매개변수 = 211 8.4.2 메소드 서명 = 213 8.4.3 메소드 제한자 = 214 8.4.4 제네릭 메소드 = 220 8.4.5 메소드 리턴 타입 = 221 8.4.6 메소드 throws 절 = 222 8.4.7 메소드 바디 = 224 8.4.8 상속, 오버라이딩, 숨기기 = 224 8.4.9 오버로딩 = 230 8.5.10 메소드 선언의 예 = 230 8.5 멤버 타입 선언 = 238 8.5.1 제한자 = 238 8.5.2 정적 멤버 타입 선언 = 238 8.6 인스턴스 초기자 = 239 8.7 정적 초기자 = 240 8.8 생성자 선언 = 240 8.8.1 형식 매개변수와 형식 타입 매개변수 = 241 8.8.2 생성자 서명 = 241 8.8.3 생성자 제한자 = 241 8.8.4 제네릭 생성자 = 242 8.8.5 생성자 throws 절 = 243 8.8.6 생성자의 타입 = 243 8.8.7 생성자 바디 = 243 8.8.8 생성자 오버로딩 = 247 8.8.9 디폴트 생성자 = 247 8.8.10 클래스의 인스턴스화 막기 = 248 8.9 열거형 = 249 9장 인터페이스 = 259 9.1 인터페이스 선언 = 260 9.1.1 인터페이스 제한자 = 260 9.1.2 제네릭 인터페이스와 타입 매개변수 = 261 9.1.3 상위인터페이스와 하위인터페이스 = 262 9.1.4 인터페이스 바디와 멤버 선언 = 263 9.1.5 인터페이스 멤버명에 대한 접근 = 263 9.2 인터페이스 멤버 = 264 9.3 필드(상수) 선언 = 264 9.3.1 인터페이스 내 필드의 초기화 = 265 9.3.2 필드 선언의 예 = 266 9.4 추상 메소드 선언 = 267 9.4.1 상속과 오버라이딩 = 268 9.4.2 오버로딩 = 269 9.4.3 추상 메소드 선언의 예 = 269 9.5 멤버 타입 선언 = 270 9.6 어노테이션 타입 = 271 9.6.1 미리 정의된 어노테이션 타입 = 278 9.7 어노테이션 = 281 10장 배열 = 287 10.1 배열 타입 = 288 10.2 배열 변수 = 288 10.3 배열 생성 = 289 10.4 배열 접근 = 289 10.5 배열의 간단한 예 = 290 10.6 배열 초기자 = 290 10.7 배열 멤버 = 292 10.8 배열의 Class 객체 = 293 10.9 문자의 배열은 String이 아니다 = 294 10.10 배열 저장 예외 = 294 11장 예외 = 297 11.1 예외의 원인 = 298 11.2 컴파일 시 예외 검사 = 298 11.2.1 표현식의 예외 분석 = 299 11.2.2 문장의 예외 분석 = 299 11.2.3 예외 검사 = 300 11.2.4 에러를 검사하지 않는 이유 = 301 11.2.5 런타임 예외를 검사하지 않는 이유 = 301 11.3 예외 처리 = 301 11.3.1 예외의 정확성 = 302 11.3.2 비동기 예외 처리 = 303 11.4 예제 = 304 11.5 예외 계층 = 306 11.5.1 로드와 링크 에러 = 306 11.5.2 가상머신 에러 = 307 12장 실행 = 309 12.1 가상머신 기동 = 309 12.1.1 Test 클래스 로드 = 310 12.1.2 Test 클래스 링크: 검증, 준비, 분석 = 310 12.1.3 Test 클래스 초기화: 초기자 실행 = 311 12.1.4 Test.main 호출 = 312 12.2 클래스와 인터페이스 로딩 = 312 12.2.1 로딩 절차 = 313 12.3 클래스와 인터페이스 링크 = 314 12.3.1 바이너리 표현 검증 = 314 12.3.2 클래스나 인터페이스 타입 준비 = 315 12.3.3 기호 참조 분석 = 315 12.4 클래스와 인터페이스 초기화 = 316 12.4.1 초기화 실행 시 = 316 12.4.2 구체적인 초기화 절차 = 319 12.4.3 초기화: 코드 생성의 결과 = 321 12.5 클래스의 인스턴스 신규 생성 = 321 12.6 클래스 인스턴스 종료 = 325 12.6.1 종료 구현 = 326 12.6.2 비순차적 소멸자 호출 = 329 12.7 클래스와 인터페이스 언로딩 = 330 12.8 프로그램 종료 = 331 13장 바이너리 호환성 = 333 13.1 바이너리 형태 = 334 13.2 바이너리 호환성과 비호환성 = 337 13.3 패키지 변경 = 338 13.4 클래스 변경 = 339 13.4.1 추상 클래스 = 339 13.4.2 final 클래스 = 339 13.4.3 public 클래스 = 339 13.4.4 상위클래스와 상위인터페이스 = 339 13.4.5 클래스 형식 타입 매개변수 = 341 13.4.6 클래스 바디와 멤버 선언 = 341 13.4.7 멤버와 생성자로의 접근 = 343 13.4.8 필드 선언 = 344 13.4.9 final 필드와 생성자 = 346 13.4.10 정적 필드 = 349 13.4.11 transient 필드 = 349 13.4.12 메소드와 생성자 선언 = 349 13.4.13 메소드와 생성자의 형식 타입 매개변수 = 350 13.4.14 메소드와 생성자의 매개변수 = 351 13.4.15 메소드 리턴 타입 = 351 13.4.16 추상 메소드 = 351 13.4.17 final 메소드 = 352 13.4.18 native 메소드 = 353 13.4.19 정적 메소드 = 353 13.4.20 synchronized 메소드 = 353 13.4.21 메소드와 생성자의 throws 절 = 353 13.4.22 메소드와 생성자 바디 = 353 13.4.23 메소드와 생성자 오버로딩 = 354 13.4.24 메소드 오버로딩 = 355 13.4.25 정적 초기자 = 355 13.4.26 열거형의 변경 = 355 13.5 인터페이스의 변경 = 356 13.5.1 public 인터페이스 = 356 13.5.2 상위인터페이스 = 356 13.5.3 인터페이스 멤버 = 356 13.5.4 인터페이스 형식 타입 매개변수 = 357 13.5.5 필드 선언 = 357 13.5.6 추상 메소드 선언 = 357 13.5.7 어노테이션 타입의 변경 = 358 14장 블록과 문장 = 359 14.1 문장의 정상 및 비정상 종료 = 360 14.2 블록 = 361 14.3 지역 클래스 선언 = 361 14.4 지역변수 선언문 = 363 14.4.1 지역변수 선언자와 타입 = 364 14.4.2 지역변수 선언 유효범위 = 365 14.4.3 지역변수에 의한 이름 감춤 = 367 14.4.4 지역변수 선언의 실행 = 368 14.5 문장 = 368 14.6 빈 문장 = 370 14.7 라벨 있는 문장 = 371 14.8 표현문 = 372 14.9 if 문 = 373 14.9.1 if-then 문 = 373 14.9.2 if-then-else 문 = 374 14.10 assert 문 = 374 14.11 switch 문 = 378 14.12 while 문 = 382 14.12.1 비정상 종료 = 383 14.13 do 문 = 383 14.13.1 비정상 종료 = 384 14.13.2 예제 = 384 14.14 for 문 = 385 14.14.1 기본 for 문 = 385 14.14.2 향상된 for 문 = 388 14.15 break 문 = 390 14.16 continue 문 = 392 14.17 return 문 = 393 14.18 throw 문 = 394 14.19 synchronized 문 = 396 14.20 try 문 = 397 14.20.1 try-catch 실행 = 400 14.20.2 try-catch-finally 실행 = 401 14.21 도달 불가능한 문장 = 403 15장 표현식 = 409 15.1 평가, 지시, 결과 = 409 15.2 값으로서의 변수 = 410 15.3 표현식의 타입 = 410 15.4 FP-strict 표현식 = 410 15.5 표현식과 실행 시 검증 = 411 15.6 평가의 정상 종료 및 비정상 종료 = 412 15.7 평가 순서 = 414 15.7.1 왼쪽 피연산자 우선 평가 = 414 15.7.2 연산 전 피연산자 평가 = 416 15.7.3 괄호와 우선순위를 고려한 평가 = 417 15.7.4 인자 목록의 좌측 우선 평가 = 418 15.7.5 그 밖의 표현식에 대한 평가 순서 = 419 15.8 기본 표현식 = 419 15.8.1 어휘 리터럴 = 420 15.8.2 클래스 리터럴 = 420 15.8.3 this = 421 15.8.4 한정 this = 422 15.8.5 괄호 표현식 = 422 15.9 클래스 인스턴스 생성식 = 423 15.9.1 인스턴스화할 클래스의 결정 = 424 15.9.2 인클로징 인스턴스 결정 = 425 15.9.3 생성자와 인자 선택 = 427 15.9.4 클래스 인스턴스 생성식의 실행 시 평가 = 427 15.9.5 익명클래스 선언 = 428 15.9.6 예제 : 평가 순서와 Out-of-Memory 검출 = 429 15.10 배열 생성식 = 430 15.10.1 배열 생성식의 실행 시 평가 = 432 15.10.2 예제 : 배열 생성 평가 순서 = 433 15.10.3 예제 : 배열 생성과 Out-of-Memory 찾기 = 434 15.11 필드 접근식 = 435 15.11.1 기본 표현식을 이용한 필드 접근 = 435 15.11.2 super를 이용한 상위클래스 멤버 접근 = 438 15.12 메소드 호출식 = 440 15.12.1 컴파일 시 단계 : 찾을 클래스나 인터페이스 결정 = 440 15.12.2 컴파일 시 단계 2: 메소드 서명 결정 = 442 15.12.3 컴파일 단계 3: 적정 메소드 선택 확인 = 471 15.12.4 실행 시 메소드 호출 평가 = 473 15.13 배열 접근식 = 483 15.13.1 실행 시 배열 접근 평가 = 483 15.13.2 배열 접근 평가 순서 예제 = 484 15.14 후행 표현식 = 486 15.14.1 표현식명 = 486 15.14.2 후행 증가 연산자 ++ = 486 15.14.3 후행 감소 연산자 -- = 487 15.15 단항 연산자 = 488 15.15.1 선행 증가 연산자 ++ = 488 15.15.2 선행 감소 연산자 -- = 489 15.15.3 단항 덧셈 연산자 + = 489 15.15.4 단항 뺄셈 연산자 - = 490 15.15.5 비트 보수 연산자 ~ = 490 15.15.6 논리 보수 연산자 ! = 491 15.16 형변환 표현식 = 491 15.17 배수 연산자 = 492 15.17.1 곱셈 연산자 * = 492 15.17.2 나눗셈 연산자 / = 493 15.17.3 나머지 연산자 % = 495 15.18 부가 연산자 = 496 15.18.1 문자열 연결 연산자 + = 497 15.18.2 숫자형의 부가 연산자(+와 -) = 500 15.19 이동 연산자 = 501 15.20 관계 연산자 = 503 15.20.1 숫자 비교 연산자 <, <=, >, >= = 503 15.20.2 타입 비교 연산자 instanceof = 504 15.21 동등비교 연산자 = 505 15.21.1 숫자 동등비교 연산자 ==과 != = 506 15.21.2 Boolean 동등비교 연산자 ==와 != = 506 15.22.3 참조 동등비교 연산자 ==과 != = 507 15.22 비트 연산자와 논리 연산자 = 507 15.22.1 정수형 비트 연산자 &, ^, | = 508 15.22.2 Boolean 논리 연산자 &, ^, | = 508 15.23 조건 And 연산자 && = 508 15.24 조건 Or 연산자 ∥ = 509 15.25 조건 연산자 ? : = 510 15.26 할당 연산자 = 512 15.26.1 단순 할당 연산자= = 513 15.26.2 복합 할당 연산자 = 519 15.27 표현식 = 525 15.28 상수 표현식 = 526 16장 명시적인 할당 = 527 16.1 명시적인 할당과 표현식 = 533 16.1.1 Boolean 상수식 = 533 16.1.2 Boolean 연산자 && = 533 16.1.3 Boolean 연산자 ∥ = 534 16.1.4 Boolean 연산자 ! = 534 16.1.5 Boolean 연산자 ?: = 534 16.1.6 조건 연산자 ?: = 535 16.1.7 boolean 형의 다른 표현식 = 535 16.1.8 할당 표현식 = 535 16.1.9 ++ 와 -- 연산자 = 536 16.1.10 나머지 표현식 = 536 16.2 명시적 할당과 문장 = 538 16.2.1 빈 문장 = 538 16.2.2 블록 = 538 16.2.3 지역 클래스 선언문 = 539 16.2.4 지역변수 선언문 = 540 16.2.5 라벨 있는 문장 = 540 16.2.6 표현문 = 540 16.2.7 if 문 = 541 16.2.8 assert 문 = 541 16.2.9 switch 문 = 542 16.2.10 while 문 = 542 16.2.11 do 문 = 543 16.2.12 for 문 = 543 16.2.13 break, continue, return, throw 문 = 545 16.2.14 synchronized 문 = 545 16.2.15 try 문 = 545 16.3 명시적 할당과 매개변수 = 547 16.4 명시적 할당과 배열 초기자 = 547 16.5 명시적 할당과 열거형 상수 = 548 16.6 명시적 할당과 익명 클래스 = 548 16.7 명시적 할당과 멤버 타입 = 549 16.8 명시적 할당과 정적 초기자 = 549 16.9 명시적 할당과 생성자, 인스턴스 초기자 = 550 17장 스레드와 잠금 = 553 17.1 잠금(Locks) = 554 17.2 예제 표기법 = 554 17.3 부적절하게 동기화된 프로그램의 동작 = 555 17.4 메모리 모델 = 557 17.4.1 공유 변수 = 558 17.4.2 액션 = 558 17.4.3 프로그램과 프로그램 순서 = 560 17.4.4 동기화 순서 = 561 17.4.5 선행(Happens-before) 순서 = 562 17.4.6 실행 = 567 17.4.7 올바르게 구성된(Well-formed) 실행 = 568 17.4.8 실행 및 인과관계 요구사항 = 568 17.4.9 식별 가능한 동작과 끝나지 않는 실행 = 571 17.5 Final 필드 의미론 = 573 17.5.1 Final 필드의 의미론 = 575 17.5.2 생성 중 Final 필드 읽기 = 576 17.5.3 Final 필드의 추후 수정 = 576 17.5.4 쓰기 방지(write-protected) 필드 = 578 17.6 워드 찢기(Word Tearing) = 578 17.7 double과 long의 비 원자적(Non-atomic) 처리 = 580 17.8 대기 집합과 통보(Notification) = 580 17.8.1 대기 = 580 17.8.2 통보(Notification) = 582 17.8.3 인터럽션(Interruption) = 582 17.8.4 대기, 통보, 인터럽션의 상호작용 = 583 17.9 일시 정지(sleep)와 양보(yidld) = 583 18장 문법 = 585 18.1 자바 프로그래밍 언어의 문법 = 585 찾아보기 = 597 옮긴이 주 = 653