| Preface |
|
xxi | |
| Preface to the Second Edition |
|
xxv | |
| Preface to the Third Edition |
|
xxix | |
|
|
|
1 | (8) |
|
|
|
5 | (1) |
|
|
|
6 | (1) |
|
Relationship to Predefined Classes and Interfaces |
|
|
6 | (1) |
|
|
|
6 | (3) |
|
|
|
9 | (4) |
|
|
|
9 | (1) |
|
|
|
9 | (1) |
|
|
|
10 | (1) |
|
|
|
10 | (3) |
|
|
|
13 | (20) |
|
|
|
13 | (1) |
|
|
|
14 | (1) |
|
|
|
15 | (1) |
|
|
|
16 | (1) |
|
Input Elements and Tokens |
|
|
17 | (1) |
|
|
|
18 | (1) |
|
|
|
18 | (1) |
|
|
|
19 | (2) |
|
|
|
21 | (1) |
|
|
|
21 | (10) |
|
|
|
22 | (2) |
|
|
|
24 | (2) |
|
|
|
26 | (1) |
|
|
|
26 | (2) |
|
|
|
28 | (2) |
|
Escape Sequences for Character and String Literals |
|
|
30 | (1) |
|
|
|
30 | (1) |
|
|
|
31 | (1) |
|
|
|
31 | (2) |
|
Types, Values, and Variables |
|
|
33 | (44) |
|
The Kinds of Types and Values |
|
|
34 | (1) |
|
Primitive Types and Values |
|
|
34 | (10) |
|
Integral Types and Values |
|
|
35 | (1) |
|
|
|
36 | (1) |
|
Floating-Point Types, Formats, and Values |
|
|
37 | (3) |
|
Floating-Point Operations |
|
|
40 | (3) |
|
The boolean Type and boolean Values |
|
|
43 | (1) |
|
Reference Types and Values |
|
|
44 | (5) |
|
|
|
45 | (2) |
|
|
|
47 | (1) |
|
|
|
48 | (1) |
|
When Reference Types Are the Same |
|
|
49 | (1) |
|
|
|
49 | (2) |
|
|
|
51 | (5) |
|
Type Arguments and Wildcards |
|
|
52 | (3) |
|
Type Argument Containment and Equivalence |
|
|
55 | (1) |
|
Members and Constructors of Parameterized Types |
|
|
55 | (1) |
|
|
|
56 | (1) |
|
|
|
56 | (1) |
|
|
|
57 | (5) |
|
|
|
62 | (1) |
|
|
|
63 | (2) |
|
Subtyping among Primitive Types |
|
|
63 | (1) |
|
Subtyping among Class and Interface Types |
|
|
63 | (1) |
|
Subtyping among Array Types |
|
|
64 | (1) |
|
|
|
65 | (2) |
|
|
|
67 | (10) |
|
Variables of Primitive Type |
|
|
67 | (1) |
|
Variables of Reference Type |
|
|
67 | (1) |
|
|
|
68 | (1) |
|
|
|
69 | (2) |
|
|
|
71 | (1) |
|
Initial Values of Variables |
|
|
71 | (2) |
|
Types, Classes, and Interfaces |
|
|
73 | (4) |
|
Conversions and Promotions |
|
|
77 | (36) |
|
|
|
80 | (13) |
|
|
|
80 | (1) |
|
Widening Primitive Conversion |
|
|
80 | (2) |
|
Narrowing Primitive Conversions |
|
|
82 | (2) |
|
Widening and Narrowing Primitive Conversions |
|
|
84 | (1) |
|
Widening Reference Conversions |
|
|
85 | (1) |
|
Narrowing Reference Conversions |
|
|
85 | (1) |
|
|
|
86 | (2) |
|
|
|
88 | (1) |
|
|
|
89 | (1) |
|
|
|
89 | (3) |
|
|
|
92 | (1) |
|
|
|
92 | (1) |
|
|
|
92 | (1) |
|
|
|
93 | (6) |
|
Method Invocation Conversion |
|
|
99 | (2) |
|
|
|
101 | (1) |
|
|
|
101 | (7) |
|
|
|
108 | (5) |
|
|
|
108 | (2) |
|
|
|
110 | (3) |
|
|
|
113 | (40) |
|
|
|
114 | (1) |
|
|
|
115 | (2) |
|
|
|
117 | (5) |
|
|
|
119 | (3) |
|
|
|
122 | (1) |
|
|
|
122 | (4) |
|
The Members of Type Variables, Parameterized Types, Raw Types and Intersection Types |
|
|
122 | (1) |
|
|
|
122 | (1) |
|
The Members of a Class Type |
|
|
123 | (1) |
|
The Members of an Interface Type |
|
|
124 | (1) |
|
The Members of an Array Type |
|
|
125 | (1) |
|
Determining the Meaning of a Name |
|
|
126 | (12) |
|
Syntactic Classification of a Name According to Context |
|
|
127 | (2) |
|
Reclassification of Contextually Ambiguous Names |
|
|
129 | (2) |
|
|
|
131 | (1) |
|
|
|
131 | (1) |
|
|
|
132 | (1) |
|
Meaning of Package or Type Names |
|
|
132 | (1) |
|
Simple Package or Type Names |
|
|
132 | (1) |
|
Qualified Package or Type Names |
|
|
132 | (1) |
|
|
|
132 | (1) |
|
|
|
132 | (1) |
|
|
|
132 | (2) |
|
Meaning of Expression Names |
|
|
134 | (1) |
|
|
|
134 | (1) |
|
Qualified Expression Names |
|
|
135 | (2) |
|
|
|
137 | (1) |
|
|
|
137 | (1) |
|
|
|
137 | (1) |
|
|
|
138 | (7) |
|
Determining Accessibility |
|
|
138 | (1) |
|
Details on protected Access |
|
|
139 | (1) |
|
Access to a protected Member |
|
|
139 | (1) |
|
Qualified Access to a protected Constructor |
|
|
140 | (1) |
|
An Example of Access Control |
|
|
140 | (1) |
|
Example: Access to public and Non-public Classes |
|
|
141 | (1) |
|
Example: Default-Access Fields, Methods, and Constructors |
|
|
142 | (1) |
|
Example: public Fields, Methods, and Constructors |
|
|
143 | (1) |
|
Example: protected Fields, Methods, and Constructors |
|
|
143 | (1) |
|
Example: private Fields, Methods, and Constructors |
|
|
144 | (1) |
|
Fully Qualified Names and Canonical Names |
|
|
145 | (1) |
|
|
|
146 | (7) |
|
|
|
147 | (1) |
|
Class and Interface Type Names |
|
|
147 | (1) |
|
|
|
148 | (1) |
|
|
|
149 | (1) |
|
|
|
150 | (1) |
|
|
|
150 | (1) |
|
Local Variable and Parameter Names |
|
|
151 | (2) |
|
|
|
153 | (20) |
|
|
|
154 | (1) |
|
Host Support for Packages |
|
|
155 | (2) |
|
Storing Packages in a File System |
|
|
155 | (2) |
|
Storing Packages in a Database |
|
|
157 | (1) |
|
|
|
157 | (1) |
|
|
|
158 | (2) |
|
|
|
158 | (1) |
|
|
|
158 | (1) |
|
|
|
159 | (1) |
|
Observability of a Package |
|
|
160 | (1) |
|
Scope of a Package Declaration |
|
|
160 | (1) |
|
|
|
160 | (6) |
|
Single-Type-Import Declaration |
|
|
161 | (2) |
|
Type-Import-on-Demand Declaration |
|
|
163 | (1) |
|
Single Static Import Declaration |
|
|
164 | (1) |
|
Static-Import-on-Demand Declaration |
|
|
165 | (1) |
|
|
|
165 | (1) |
|
|
|
165 | (1) |
|
Top Level Type Declarations |
|
|
166 | (3) |
|
|
|
169 | (4) |
|
|
|
173 | (86) |
|
|
|
175 | (15) |
|
|
|
175 | (1) |
|
|
|
176 | (2) |
|
|
|
178 | (1) |
|
|
|
178 | (1) |
|
Generic Classes and Type Parameters |
|
|
178 | (3) |
|
Inner Classes and Enclosing Instances |
|
|
181 | (3) |
|
Superclasses and Subclasses |
|
|
184 | (2) |
|
|
|
186 | (3) |
|
Class Body and Member Declarations |
|
|
189 | (1) |
|
|
|
190 | (6) |
|
|
|
192 | (1) |
|
Example: Inheritance with Default Access |
|
|
192 | (1) |
|
Inheritance with public and protected |
|
|
193 | (1) |
|
|
|
193 | (1) |
|
Accessing Members of Inaccessible Classes |
|
|
194 | (2) |
|
|
|
196 | (13) |
|
|
|
197 | (1) |
|
|
|
198 | (1) |
|
|
|
199 | (1) |
|
|
|
199 | (1) |
|
|
|
199 | (2) |
|
|
|
201 | (1) |
|
Initializers for Class Variables |
|
|
202 | (1) |
|
Initializers for Instance Variables |
|
|
202 | (1) |
|
Restrictions on the use of Fields during Initialization |
|
|
203 | (2) |
|
Examples of Field Declarations |
|
|
205 | (1) |
|
Example: Hiding of Class Variables |
|
|
205 | (1) |
|
Example: Hiding of Instance Variables |
|
|
206 | (1) |
|
Example: Multiply Inherited Fields |
|
|
207 | (2) |
|
Example: Re-inheritance of Fields |
|
|
209 | (1) |
|
|
|
209 | (28) |
|
|
|
210 | (2) |
|
|
|
212 | (2) |
|
|
|
214 | (1) |
|
|
|
214 | (2) |
|
|
|
216 | (1) |
|
|
|
217 | (1) |
|
|
|
218 | (1) |
|
|
|
218 | (1) |
|
|
|
218 | (2) |
|
|
|
220 | (1) |
|
|
|
220 | (1) |
|
|
|
221 | (2) |
|
|
|
223 | (1) |
|
Inheritance, Overriding, and Hiding |
|
|
224 | (1) |
|
Overriding (by Instance Methods) |
|
|
224 | (1) |
|
Hiding (by Class Methods) |
|
|
225 | (1) |
|
Requirements in Overriding and Hiding |
|
|
225 | (3) |
|
Inheriting Methods with Override-Equivalent Signatures |
|
|
228 | (1) |
|
|
|
229 | (1) |
|
Examples of Method Declarations |
|
|
230 | (1) |
|
|
|
230 | (1) |
|
Example: Overloading, Overriding, and Hiding |
|
|
231 | (1) |
|
Example: Incorrect Overriding |
|
|
231 | (1) |
|
Example: Overriding versus Hiding |
|
|
232 | (2) |
|
Example: Invocation of Hidden Class Methods |
|
|
234 | (1) |
|
Large Example of Overriding |
|
|
234 | (2) |
|
Example: Incorrect Overriding because of Throws |
|
|
236 | (1) |
|
|
|
237 | (1) |
|
|
|
238 | (1) |
|
Static Member Type Declarations |
|
|
238 | (1) |
|
|
|
238 | (1) |
|
|
|
239 | (1) |
|
|
|
240 | (9) |
|
Formal Parameters and Formal Type Parameter |
|
|
240 | (1) |
|
|
|
241 | (1) |
|
|
|
241 | (1) |
|
|
|
242 | (1) |
|
|
|
242 | (1) |
|
The Type of a Constructor |
|
|
242 | (1) |
|
|
|
242 | (1) |
|
Explicit Constructor Invocations |
|
|
243 | (3) |
|
|
|
246 | (1) |
|
|
|
247 | (1) |
|
Preventing Instantiation of a Class |
|
|
248 | (1) |
|
|
|
249 | (10) |
|
|
|
259 | (28) |
|
|
|
260 | (3) |
|
|
|
260 | (1) |
|
|
|
261 | (1) |
|
|
|
261 | (1) |
|
Generic Interfaces and Type Parameters |
|
|
261 | (1) |
|
Superinterfaces and Subinterfaces |
|
|
261 | (2) |
|
Interface Body and Member Declarations |
|
|
263 | (1) |
|
Access to Interface Member Names |
|
|
263 | (1) |
|
|
|
263 | (1) |
|
Field (Constant) Declarations |
|
|
264 | (2) |
|
Initialization of Fields in Interfaces |
|
|
265 | (1) |
|
Examples of Field Declarations |
|
|
265 | (1) |
|
Ambiguous Inherited Fields |
|
|
265 | (1) |
|
Multiply Inherited Fields |
|
|
266 | (1) |
|
Abstract Method Declarations |
|
|
266 | (4) |
|
Inheritance and Overriding |
|
|
267 | (1) |
|
|
|
268 | (1) |
|
Examples of Abstract Method Declarations |
|
|
269 | (1) |
|
|
|
269 | (1) |
|
|
|
269 | (1) |
|
|
|
270 | (1) |
|
|
|
270 | (11) |
|
Predefined Annotation Types |
|
|
277 | (1) |
|
|
|
278 | (1) |
|
|
|
278 | (1) |
|
|
|
279 | (1) |
|
|
|
279 | (1) |
|
|
|
280 | (1) |
|
|
|
280 | (1) |
|
|
|
281 | (6) |
|
|
|
287 | (10) |
|
|
|
288 | (1) |
|
|
|
288 | (1) |
|
|
|
289 | (1) |
|
|
|
289 | (1) |
|
|
|
290 | (1) |
|
|
|
290 | (2) |
|
|
|
292 | (1) |
|
|
|
293 | (1) |
|
An Array of Characters is Not a String |
|
|
294 | (1) |
|
|
|
294 | (3) |
|
|
|
297 | (12) |
|
|
|
298 | (1) |
|
Compile-Time Checking of Exceptions |
|
|
299 | (3) |
|
Exception Analysis of Expressions |
|
|
299 | (1) |
|
Exception Analysis of Statements |
|
|
300 | (1) |
|
|
|
301 | (1) |
|
Why Errors are Not Checked |
|
|
301 | (1) |
|
Why Runtime Exceptions are Not Checked |
|
|
301 | (1) |
|
|
|
302 | (2) |
|
|
|
303 | (1) |
|
Handling Asynchronous Exceptions |
|
|
303 | (1) |
|
|
|
304 | (2) |
|
|
|
306 | (3) |
|
Loading and Linkage Errors |
|
|
307 | (1) |
|
|
|
307 | (2) |
|
|
|
309 | (24) |
|
|
|
309 | (3) |
|
|
|
310 | (1) |
|
Link Test: Verify, Prepare, (Optionally) Resolve |
|
|
310 | (1) |
|
Initialize Test: Execute Initializers |
|
|
311 | (1) |
|
|
|
312 | (1) |
|
Loading of Classes and Interfaces |
|
|
312 | (2) |
|
|
|
313 | (1) |
|
Linking of Classes and Interfaces |
|
|
314 | (2) |
|
Verification of the Binary Representation |
|
|
314 | (1) |
|
Preparation of a Class or Interface Type |
|
|
315 | (1) |
|
Resolution of Symbolic References |
|
|
315 | (1) |
|
Initialization of Classes and Interfaces |
|
|
316 | (6) |
|
When Initialization Occurs |
|
|
316 | (3) |
|
Detailed Initialization Procedure |
|
|
319 | (2) |
|
Initialization: Implications for Code Generation |
|
|
321 | (1) |
|
Creation of New Class Instances |
|
|
322 | (3) |
|
Finalization of Class Instances |
|
|
325 | (5) |
|
Implementing Finalization |
|
|
326 | (2) |
|
Interaction with the Memory Model |
|
|
328 | (1) |
|
Finalizer Invocations are Not Ordered |
|
|
329 | (1) |
|
Unloading of Classes and Interfaces |
|
|
330 | (1) |
|
|
|
331 | (2) |
|
|
|
333 | (26) |
|
|
|
334 | (5) |
|
What Binary Compatibility Is and Is Not |
|
|
339 | (1) |
|
|
|
340 | (1) |
|
|
|
340 | (16) |
|
|
|
340 | (1) |
|
|
|
341 | (1) |
|
|
|
341 | (1) |
|
Superclasses and Superinterfaces |
|
|
341 | (1) |
|
Class Formal Type Parameters |
|
|
342 | (1) |
|
Class Body and Member Declarations |
|
|
343 | (1) |
|
Access to Members and Constructors |
|
|
344 | (1) |
|
|
|
345 | (2) |
|
final Fields and Constants |
|
|
347 | (2) |
|
|
|
349 | (1) |
|
|
|
350 | (1) |
|
Method and Constructor Declarations |
|
|
350 | (1) |
|
Method and Constructor Formal Type Parameters |
|
|
351 | (1) |
|
Method and Constructor Parameters |
|
|
352 | (1) |
|
|
|
352 | (1) |
|
|
|
352 | (1) |
|
|
|
353 | (1) |
|
|
|
354 | (1) |
|
|
|
354 | (1) |
|
|
|
354 | (1) |
|
Method and Constructor Throws |
|
|
354 | (1) |
|
Method and Constructor Body |
|
|
354 | (1) |
|
Method and Constructor Overloading |
|
|
355 | (1) |
|
|
|
356 | (1) |
|
|
|
356 | (1) |
|
|
|
356 | (1) |
|
|
|
356 | (3) |
|
|
|
356 | (1) |
|
|
|
357 | (1) |
|
|
|
357 | (1) |
|
Interface Formal Type Parameters |
|
|
357 | (1) |
|
|
|
358 | (1) |
|
Abstract Method Declarations |
|
|
358 | (1) |
|
Evolution of Annotation Types |
|
|
358 | (1) |
|
|
|
359 | (50) |
|
Normal and Abrupt Completion of Statements |
|
|
360 | (1) |
|
|
|
361 | (1) |
|
|
|
361 | (2) |
|
Local Variable Declaration Statements |
|
|
363 | (5) |
|
Local Variable Declarators and Types |
|
|
364 | (1) |
|
Scope of Local Variable Declarations |
|
|
364 | (3) |
|
Shadowing of Names by Local Variables |
|
|
367 | (1) |
|
Execution of Local Variable Declarations |
|
|
367 | (1) |
|
|
|
368 | (2) |
|
|
|
370 | (1) |
|
|
|
370 | (1) |
|
|
|
371 | (1) |
|
|
|
372 | (1) |
|
|
|
372 | (1) |
|
The if-then-else Statement |
|
|
372 | (1) |
|
|
|
373 | (4) |
|
|
|
377 | (3) |
|
|
|
380 | (2) |
|
|
|
381 | (1) |
|
|
|
382 | (2) |
|
|
|
383 | (1) |
|
|
|
383 | (1) |
|
|
|
384 | (4) |
|
|
|
384 | (1) |
|
Initialization of for statement |
|
|
385 | (1) |
|
Iteration of for statement |
|
|
385 | (1) |
|
Abrupt Completion of for statement |
|
|
386 | (1) |
|
The enhanced for statement |
|
|
387 | (1) |
|
|
|
388 | (2) |
|
|
|
390 | (2) |
|
|
|
392 | (1) |
|
|
|
393 | (2) |
|
The synchronized Statement |
|
|
395 | (1) |
|
|
|
396 | (6) |
|
|
|
398 | (1) |
|
Execution of try-catch-finally |
|
|
399 | (3) |
|
|
|
402 | (7) |
|
|
|
409 | (118) |
|
Evaluation, Denotation, and Result |
|
|
409 | (1) |
|
|
|
410 | (1) |
|
|
|
410 | (1) |
|
|
|
411 | (1) |
|
Expressions and Run-Time Checks |
|
|
411 | (2) |
|
Normal and Abrupt Completion of Evaluation |
|
|
413 | (1) |
|
|
|
414 | (6) |
|
Evaluate Left-Hand Operand First |
|
|
415 | (1) |
|
Evaluate Operands before Operation |
|
|
416 | (1) |
|
Evaluation Respects Parentheses and Precedence |
|
|
417 | (1) |
|
Argument Lists are Evaluated Left-to-Right |
|
|
418 | (1) |
|
Evaluation Order for Other Expressions |
|
|
419 | (1) |
|
|
|
420 | (3) |
|
|
|
420 | (1) |
|
|
|
421 | (1) |
|
|
|
421 | (1) |
|
|
|
422 | (1) |
|
Parenthesized Expressions |
|
|
422 | (1) |
|
Class Instance Creation Expressions |
|
|
423 | (8) |
|
Determining the Class being Instantiated |
|
|
424 | (1) |
|
Determining Enclosing Instances |
|
|
425 | (2) |
|
Choosing the Constructor and its Arguments |
|
|
427 | (1) |
|
Run-time Evaluation of Class Instance Creation Expressions |
|
|
428 | (1) |
|
Anonymous Class Declarations |
|
|
429 | (1) |
|
|
|
429 | (1) |
|
Example: Evaluation Order and Out-of-Memory Detection |
|
|
430 | (1) |
|
Array Creation Expressions |
|
|
431 | (4) |
|
Run-time Evaluation of Array Creation Expressions |
|
|
432 | (1) |
|
Example: Array Creation Evaluation Order |
|
|
433 | (1) |
|
Example: Array Creation and Out-of-Memory Detection |
|
|
434 | (1) |
|
|
|
435 | (5) |
|
Field Access Using a Primary |
|
|
435 | (3) |
|
Accessing Superclass Members using super |
|
|
438 | (2) |
|
Method Invocation Expressions |
|
|
440 | (42) |
|
Compile-Time Step 1: Determine Class or Interface to Search |
|
|
440 | (2) |
|
Compile-Time Step 2: Determine Method Signature |
|
|
442 | (1) |
|
Identify Potentially Applicable Methods |
|
|
443 | (2) |
|
Phase 1: Identify Matching Arity Methods Applicable by Subtyping |
|
|
445 | (1) |
|
Phase 2: Identify Matching Arity Methods Applicable by Method Invocation Conversion |
|
|
446 | (1) |
|
Phase 3: Identify Applicable Variable Arity Methods |
|
|
446 | (1) |
|
Choosing the Most Specific Method |
|
|
447 | (3) |
|
Method Result and Throws Types |
|
|
450 | (1) |
|
Inferring Type Arguments Based on Actual Arguments |
|
|
451 | (15) |
|
Inferring Unresolved Type Arguments |
|
|
466 | (1) |
|
|
|
466 | (2) |
|
Example: Overloading Ambiguity |
|
|
468 | (1) |
|
Example: Return Type Not Considered |
|
|
468 | (1) |
|
Example: Compile-Time Resolution |
|
|
469 | (2) |
|
Compile-Time Step 3: Is the Chosen Method Appropriate? |
|
|
471 | (2) |
|
Runtime Evaluation of Method Invocation |
|
|
473 | (1) |
|
Compute Target Reference (If Necessary) |
|
|
473 | (1) |
|
|
|
474 | (1) |
|
Check Accessibility of Type and Method |
|
|
475 | (1) |
|
|
|
476 | (1) |
|
Create Frame, Synchronize, Transfer Control |
|
|
477 | (2) |
|
Example: Target Reference and Static Methods |
|
|
479 | (1) |
|
Example: Evaluation Order |
|
|
479 | (1) |
|
|
|
480 | (1) |
|
Example: Method Invocation using super |
|
|
481 | (1) |
|
|
|
482 | (3) |
|
Runtime Evaluation of Array Access |
|
|
483 | (1) |
|
Examples: Array Access Evaluation Order |
|
|
483 | (2) |
|
|
|
485 | (2) |
|
|
|
485 | (1) |
|
Postfix Increment Operator ++ |
|
|
485 | (1) |
|
Postfix Decrement Operator -- |
|
|
486 | (1) |
|
|
|
487 | (3) |
|
Prefix Increment Operator ++ |
|
|
487 | (1) |
|
Prefix Decrement Operator -- |
|
|
488 | (1) |
|
|
|
489 | (1) |
|
|
|
489 | (1) |
|
Bitwise Complement Operator ~ |
|
|
490 | (1) |
|
Logical Complement Operator ! |
|
|
490 | (1) |
|
|
|
490 | (1) |
|
|
|
491 | (5) |
|
Multiplication Operator * |
|
|
492 | (1) |
|
|
|
493 | (2) |
|
|
|
495 | (1) |
|
|
|
496 | (6) |
|
String Concatenation Operator + |
|
|
497 | (1) |
|
|
|
497 | (1) |
|
Optimization of String Concatenation |
|
|
498 | (1) |
|
Examples of String Concatenation |
|
|
498 | (2) |
|
Additive Operators (+ and -) for Numeric Types |
|
|
500 | (2) |
|
|
|
502 | (1) |
|
|
|
503 | (2) |
|
Numerical Comparison Operators <, <=, >, and >= |
|
|
503 | (1) |
|
Type Comparison Operator instanceof |
|
|
504 | (1) |
|
|
|
505 | (3) |
|
Numerical Equality Operators == and != |
|
|
506 | (1) |
|
Boolean Equality Operators == and != |
|
|
507 | (1) |
|
Reference Equality Operators == and != |
|
|
507 | (1) |
|
Bitwise and Logical Operators |
|
|
508 | (1) |
|
Integer Bitwise Operators &, ^, and | |
|
|
508 | (1) |
|
Boolean Logical Operators &, ^, and | |
|
|
508 | (1) |
|
Conditional-And Operator && |
|
|
509 | (1) |
|
Conditional-Or Operator || |
|
|
509 | (1) |
|
|
|
510 | (2) |
|
|
|
512 | (13) |
|
Simple Assignment Operator = |
|
|
513 | (5) |
|
Compound Assignment Operators |
|
|
518 | (7) |
|
|
|
525 | (1) |
|
|
|
525 | (2) |
|
|
|
527 | (26) |
|
Definite Assignment and Expressions |
|
|
533 | (5) |
|
Boolean Constant Expressions |
|
|
533 | (1) |
|
|
|
533 | (1) |
|
|
|
534 | (1) |
|
|
|
534 | (1) |
|
|
|
534 | (1) |
|
The Conditional Operator ? : |
|
|
535 | (1) |
|
Other Expressions of Type boolean |
|
|
535 | (1) |
|
|
|
535 | (1) |
|
|
|
536 | (1) |
|
|
|
536 | (2) |
|
Definite Assignment and Statements |
|
|
538 | (9) |
|
|
|
538 | (1) |
|
|
|
538 | (1) |
|
Local Class Declaration Statements |
|
|
539 | (1) |
|
Local Variable Declaration Statements |
|
|
539 | (1) |
|
|
|
540 | (1) |
|
|
|
540 | (1) |
|
|
|
541 | (1) |
|
|
|
541 | (1) |
|
|
|
541 | (1) |
|
|
|
542 | (1) |
|
|
|
543 | (1) |
|
|
|
543 | (1) |
|
|
|
544 | (1) |
|
|
|
544 | (1) |
|
break, continue, return, and throw Statements |
|
|
545 | (1) |
|
|
|
545 | (1) |
|
|
|
545 | (2) |
|
Definite Assignment and Parameters |
|
|
547 | (1) |
|
Definite Assignment and Array Initializers |
|
|
547 | (1) |
|
Definite Assignment and Enum Constants |
|
|
548 | (1) |
|
Definite Assignment and Anonymous Classes |
|
|
548 | (1) |
|
Definite Assignment and Member Types |
|
|
549 | (1) |
|
Definite Assignment and Static Initializers |
|
|
549 | (1) |
|
Definite Assignment, Constructors, and Instance Initializers |
|
|
550 | (3) |
|
|
|
553 | (32) |
|
|
|
554 | (1) |
|
|
|
554 | (1) |
|
Incorrectly Synchronized Programs Exhibit Surprising Behaviors |
|
|
555 | (2) |
|
|
|
557 | (16) |
|
|
|
558 | (1) |
|
|
|
558 | (2) |
|
Programs and Program Order |
|
|
560 | (1) |
|
|
|
561 | (1) |
|
|
|
561 | (6) |
|
|
|
567 | (1) |
|
|
|
568 | (1) |
|
Executions and Causality Requirements |
|
|
568 | (3) |
|
Observable Behavior and Nonterminating Executions |
|
|
571 | (2) |
|
|
|
573 | (5) |
|
Semantics of Final Fields |
|
|
575 | (1) |
|
Reading Final Fields During Construction |
|
|
576 | (1) |
|
Subsequent Modification of Final Fields |
|
|
576 | (2) |
|
|
|
578 | (1) |
|
|
|
578 | (1) |
|
Non-atomic Treatment of double and long |
|
|
579 | (1) |
|
Wait Sets and Notification |
|
|
580 | (3) |
|
|
|
580 | (1) |
|
|
|
581 | (1) |
|
|
|
582 | (1) |
|
Interactions of Waits, Notification and Interruption |
|
|
582 | (1) |
|
|
|
583 | (2) |
|
|
|
585 | (12) |
|
The Grammar of the Java Programming Language |
|
|
585 | (12) |
| Index |
|
597 | (52) |
| Credits |
|
649 | (2) |
| Colophon |
|
651 | |