Index

Symbols

= operator
assignment conversion, 5.2
expressions and run-time checks, 15.5, 15.5
normal and abrupt completion of evaluation, 15.6, 15.6
@Deprecated, 9.6.3.6
@Inherited, 9.6.3.3
@Override, 9.6.3.4
@Retention, 9.6.3.2
@SafeVarargs, 9.6.3.7
formal parameters, 8.4.1
@SuppressWarnings, 9.6.3.5
checked casts and unchecked casts, 5.5.2
formal parameters, 8.4.1
inheriting methods with override-equivalent signatures, 8.4.8.4, 8.4.8.4
requirements in overriding and hiding, 8.4.8.3
unchecked conversion, 5.1.9
@Target, 9.6.3.1

A

abrupt completion of do statement, 14.13.1
do statement, 14.13
abrupt completion of for statement, 14.14.1.3
iteration of for statement, 14.14.1.2
abrupt completion of while statement, 14.12.1
while statement, 14.12
abstract classes, 8.1.1.1, 13.4.1
abstract methods, 8.4.3.1
anonymous class declarations, 15.9.5
array creation expressions, 15.10
final classes, 8.1.1.2
resolution of symbolic references, 12.3.3
superinterfaces, 8.1.5
abstract interfaces, 9.1.1.1
abstract method declarations, 9.4
abstract classes, 8.1.1.1
annotations, 9.7
declarations, 6.1, 6.1
interface body and member declarations, 9.1.4
raw types, 4.8
syntactic classification of a name according to context, 6.5.1, 6.5.1, 6.5.1
abstract methods, 8.4.3.1, 13.4.16, 13.5.6
abstract classes, 8.1.1.1
access control, 6.6
abstract method declarations, 9.4
class literals, 15.8.2
class modifiers, 8.1.1, 8.1.1
constructor declarations, 8.8
default constructor, 8.8.9, 8.8.9
determining the class being instantiated, 15.9.1, 15.9.1, 15.9.1, 15.9.1
explicit constructor invocations, 8.8.7.1, 8.8.7.1
field access using a primary, 15.11.1
identify potentially applicable methods, 15.12.2.1
import declarations, 7.5
local class declarations, 14.3
member type declarations, 8.5
method modifiers, 8.4.3
normal annotations, 9.7.1
objects, 4.3.1
qualified expression names, 6.5.6.2, 6.5.6.2, 6.5.6.2
qualified type names, 6.5.5.2, 6.5.5.2
reference types and values, 4.3
requirements in overriding and hiding, 8.4.8.3
shadowing and obscuring, 6.4
single-static-import declarations, 7.5.3
single-type-import declarations, 7.5.1
static-import-on-demand declarations, 7.5.4
superclasses and subclasses, 8.1.4
superinterfaces, 8.1.5
superinterfaces and subinterfaces, 9.1.3
top level type declarations, 7.6
type-import-on-demand declarations, 7.5.2
access to a protected member, 6.6.2.1
access to members and constructors, 13.4.7
resolution of symbolic references, 12.3.3
accessing superclass members using super, 15.11.2
field declarations, 8.3
initialization of fields in interfaces, 9.3.1
initializers for class variables, 8.3.2.1
initializers for instance variables, 8.3.2.2
instance initializers, 8.6
static methods, 8.4.3.2
syntactic classification of a name according to context, 6.5.1
actions, 17.4.2
synchronization order, 17.4.4
additive operators, 15.18
constant expressions, 15.28
integer operations, 4.2.2
additive operators (+ and -) for numeric types, 15.18.2
binary numeric promotion, 5.6.2
floating-point operations, 4.2.4
an array of characters is not a String, 10.9
annotation type elements, 9.6.1
annotation types, 9.6
annotation types, 9.6
abstract method declarations, 9.4
annotations, 9.7, 9.7
class modifiers, 8.1.1
constructor modifiers, 8.8.3
enum constants, 8.9.1
field (constant) declarations, 9.3
field modifiers, 8.3.1
formal parameters, 8.4.1
interface declarations, 9.1
interface modifiers, 9.1.1
method modifiers, 8.4.3
named packages, 7.4.1
syntactic classification of a name according to context, 6.5.1
annotations, 9.7
abstract method declarations, 9.4
annotation types, 9.6
class modifiers, 8.1.1
constructor modifiers, 8.8.3
defaults for annotation type elements, 9.6.2, 9.6.2
enum constants, 8.9.1
evaluation, denotation, and result, 15.1
field (constant) declarations, 9.3
field modifiers, 8.3.1
formal parameters, 8.4.1
interface modifiers, 9.1.1
local variable declarators and types, 14.4.1
member type declarations, 8.5
method modifiers, 8.4.3
named packages, 7.4.1
syntactic classification of a name according to context, 6.5.1, 6.5.1, 6.5.1
anonymous class declarations, 15.9.5
class instance creation expressions, 15.9, 15.9
class modifiers, 8.1.1
definite assignment and anonymous classes, 16.6
enum constants, 8.9.1
form of a binary, 13.1
initialization of fields in interfaces, 9.3.1
inner classes and enclosing instances, 8.1.3
syntactic classification of a name according to context, 6.5.1
anonymous constructors, 15.9.5.1
choosing the constructor and its arguments, 15.9.3
argument lists are evaluated left-to-right, 15.7.4
array access, 10.4
array access expressions, 15.13
array access, 10.4
assignment operators, 15.26
compound assignment operators, 15.26.2
expressions and run-time checks, 15.5, 15.5
normal and abrupt completion of evaluation, 15.6, 15.6
simple assignment operator =, 15.26.1
syntactic classification of a name according to context, 6.5.1
unary numeric promotion, 5.6.1
array creation, 10.3
array creation expressions, 15.10
array creation, 10.3
array initializers, 10.6
initial values of variables, 4.12.5
kinds of variables, 4.12.3
normal and abrupt completion of evaluation, 15.6, 15.6
objects, 4.3.1
syntactic classification of a name according to context, 6.5.1
unary numeric promotion, 5.6.1
array initializers, 10.6
array creation, 10.3
definite assignment and array initializers, 16.4
normal and abrupt completion of evaluation, 15.6
normal annotations, 9.7.1
objects, 4.3.1
run-time evaluation of array creation expressions, 15.10.1
array members, 10.7
declarations, 6.1, 6.1
happens-before order, 17.4.5
array store exception, 10.5
array variables, 10.2
assignment conversion, 5.2
expressions and run-time checks, 15.5, 15.5
normal and abrupt completion of evaluation, 15.6
variables, 4.12
array types, 10.1
enhanced for statement, 14.14.2
raw types, 4.8
reifiable types, 4.7
array variables, 10.2
enhanced for statement, 14.14.2
formal parameters, 8.4.1
arrays, 10
annotation type elements, 9.6.1
array creation expressions, 15.10
kinds of variables, 4.12.3
reference types and values, 4.3
when reference types are the same, 4.3.4
assert statement, 14.10
assert statements, 16.2.8
detailed initialization procedure, 12.4.2
when initialization occurs, 12.4.1
assert statements, 16.2.8
assignment conversion, 5.2
array initializers, 10.6
array store exception, 10.5
array variables, 10.2
execution of try-catch, 14.20.1
expressions and run-time checks, 15.5, 15.5
inferring unresolved type arguments, 15.12.2.8
normal annotations, 9.7.1
return statement, 14.17
simple assignment operator =, 15.26.1, 15.26.1
switch statement, 14.11
throw statement, 14.18, 14.18
type of an expression, 15.3
variables, 4.12
assignment expressions, 16.1.8
assignment operators, 15.26
assignment conversion, 5.2
assignment expressions, 16.1.8
evaluation order for other expressions, 15.7.5
initial values of variables, 4.12.5
initialization of fields, 8.3.2
syntactic classification of a name according to context, 6.5.1
try statement, 14.20
variables, 4.12
asynchronous Exceptions, 11.1.3
causes of Exceptions, 11.1.2

B

basic for statement, 14.14.1
for statements, 16.2.12
scope of a declaration, 6.3
basic try-with-resources, 14.20.3.1
extended try-with-resources, 14.20.3.2
binary compatibility, 13
binary numeric promotion, 5.6.2
additive operators (+ and -) for numeric types, 15.18.2
conditional operator ? :, 15.25
division operator /, 15.17.2
integer bitwise operators &, ^, and |, 15.22.1
multiplicative operators, 15.17
numeric promotions, 5.6
numerical comparison operators <, <=, >, and >=, 15.20.1
numerical equality operators == and !=, 15.21.1
postfix decrement operator --, 15.14.3
postfix increment operator ++, 15.14.2
prefix decrement operator --, 15.15.2
prefix increment operator ++, 15.15.1
remainder operator %, 15.17.3
shift operators, 15.19
bitwise and logical operators, 15.22
constant expressions, 15.28
bitwise complement operator ~, 15.15.5
constant expressions, 15.28
integer operations, 4.2.2
unary numeric promotion, 5.6.1
blocks, 14.2, 16.2.2
blocks, 16.2.2
kinds of variables, 4.12.3
local class declarations, 14.3
scope of a declaration, 6.3
blocks and statements, 14
boolean constant expressions, 16.1.1
boolean equality operators == and !=, 15.21.2
boolean type and boolean values, 4.2.5
boolean literals, 3.10.3
boolean type and boolean values, 4.2.5
constant expressions, 15.28
identifiers, 3.8
lexical literals, 15.8.1
boolean logical operators &, ^, and |, 15.22.2
boolean type and boolean values, 4.2.5
conditional-and operator &&, 15.23
conditional-or operator ||, 15.24
boolean type and boolean values, 4.2.5
boolean literals, 3.10.3
lexical literals, 15.8.1
boxing conversion, 5.1.7
assignment conversion, 5.2
boolean type and boolean values, 4.2.5
casting conversion, 5.5
class literals, 15.8.2
conditional operator ? :, 15.25, 15.25
creation of new class instances, 12.5
floating-point operations, 4.2.4
inferring unresolved type arguments, 15.12.2.8
integer operations, 4.2.2
method invocation conversion, 5.3
normal and abrupt completion of evaluation, 15.6
objects, 4.3.1
postfix decrement operator --, 15.14.3
postfix increment operator ++, 15.14.2
prefix decrement operator --, 15.15.2
prefix increment operator ++, 15.15.1
break statement, 14.15
break, continue, return, and throw statements, 16.2.13
labeled statements, 14.7
names and identifiers, 6.2, 6.2
normal and abrupt completion of statements, 14.1
break, continue, return, and throw statements, 16.2.13

C

capture conversion, 5.1.10
array access expressions, 15.13
assignment operators, 15.26
cast expressions, 15.16
conditional operator ? :, 15.25
field access using a primary, 15.11.1
inferring type arguments based on actual arguments, 15.12.2.7
inferring unresolved type arguments, 15.12.2.8
intersection types, 4.9
method result and throws types, 15.12.2.6, 15.12.2.6
parameterized types, 4.5
qualified expression names, 6.5.6.2, 6.5.6.2, 6.5.6.2, 6.5.6.2, 6.5.6.2
simple expression names, 6.5.6.1
subtyping among class and interface types, 4.10.2
cast expressions, 15.16
array types, 10.1
casting conversion, 5.5
compile-time step 3: is the chosen method appropriate?, 15.12.3
constant expressions, 15.28
expressions and run-time checks, 15.5, 15.5
floating-point operations, 4.2.4
happens-before order, 17.4.5
integer operations, 4.2.2
normal and abrupt completion of evaluation, 15.6
objects, 4.3.1
syntactic classification of a name according to context, 6.5.1
type comparison operator instanceof, 15.20.2
unary operators, 15.15
casting conversion, 5.5
cast expressions, 15.16
expressions and run-time checks, 15.5, 15.5
happens-before order, 17.4.5
objects, 4.3.1
reference equality operators == and !=, 15.21.3
casting conversions to primitive types, 5.5
casting conversions to reference types, 5.5
causes of Exceptions, 11.1.2
character literals, 3.10.4
comments, 3.7
constant expressions, 15.28
escape sequences for character and String literals, 3.10.6
lexical literals, 15.8.1
unicode, 3.1
check accessibility of type and method, 15.12.4.3
checked casts and unchecked casts, 5.5.2
variables of reference type, 4.12.2
checked casts at run time, 5.5.3
checked casts and unchecked casts, 5.5.2
choosing the constructor and its arguments, 15.9.3
choosing the most specific method, 15.12.2.5
compile-time step 2: determine method Signature, 15.12.2
method and constructor overloading, 13.4.23
phase 1: identify matching arity methods applicable by subtyping, 15.12.2.2
phase 2: identify matching arity methods applicable by method invocation conversion, 15.12.2.3
phase 3: identify applicable variable arity methods, 15.12.2.4
class body and member declarations, 8.1.6, 13.4.6
class members, 8.2
scope of a declaration, 6.3
what binary compatibility is and is not, 13.2
class declarations, 8.1
declarations, 6.1
types, classes, and interfaces, 4.12.6
class instance creation expressions, 15.9
abstract classes, 8.1.1.1
constructor declarations, 8.8, 8.8
constructor overloading, 8.8.8
creation of new class instances, 12.5
exception analysis of expressions, 11.2.1
form of a binary, 13.1
initial values of variables, 4.12.5, 4.12.5
instance initializers, 8.6
kinds of variables, 4.12.3
method invocation conversion, 5.3
names and identifiers, 6.2
normal and abrupt completion of evaluation, 15.6
objects, 4.3.1, 4.3.1
return statement, 14.17
run-time handling of an exception, 11.3
String conversion, 5.1.11
syntactic classification of a name according to context, 6.5.1, 6.5.1, 6.5.1
types, classes, and interfaces, 4.12.6
class literals, 15.8.2
normal annotations, 9.7.1
syntactic classification of a name according to context, 6.5.1
class loading
causes of Exceptions, 11.1.2
class literals, 15.8.2
load the class test, 12.1.1
superclasses and subclasses, 8.1.4
superinterfaces and subinterfaces, 9.1.3
class members, 8.2
declarations, 6.1
members and constructors of parameterized types, 4.5.2
class modifiers, 8.1.1
annotations, 9.7
anonymous class declarations, 15.9.5
local class declarations, 14.3
reference type casting, 5.5.1, 5.5.1, 5.5.1
top level type declarations, 7.6
class Object, 4.3.2
checked casts at run time, 5.5.3, 5.5.3
class objects for arrays, 10.8
types, classes, and interfaces, 4.12.6
class String, 4.3.3
lexical literals, 15.8.1
literals, 3.10
objects, 4.3.1
String literals, 3.10.5, 3.10.5
class type parameters, 13.4.5
classes, 8
intersection types, 4.9
local class declarations, 14.3
package members, 7.1
qualified expression names, 6.5.6.2
reclassification of contextually ambiguous names, 6.5.2
reference types and values, 4.3
top level type declarations, 7.6
comments, 3.7
input elements and tokens, 3.5, 3.5
lexical grammar, 2.2
lexical translations, 3.2
line terminators, 3.4
unicode, 3.1
compilation units, 7.3
determining accessibility, 6.6.1
host support for packages, 7.2
identify potentially applicable methods, 15.12.2.1
observability of a package, 7.4.3
package members, 7.1
reclassification of contextually ambiguous names, 6.5.2, 6.5.2
scope of a declaration, 6.3
shadowing, 6.4.1
syntactic grammar, 2.3
compile-time checking of Exceptions, 11.2
exception checking, 11.2.3
compile-time step 1: determine class or interface to search, 15.12.1
class Object, 4.3.2
identify potentially applicable methods, 15.12.2.1
raw types, 4.8
compile-time step 2: determine method Signature, 15.12.2
choosing the constructor and its arguments, 15.9.3, 15.9.3
compile-time step 1: determine class or interface to search, 15.12.1
enum constants, 8.9.1
overloading, 8.4.9
what binary compatibility is and is not, 13.2
compile-time step 3: is the chosen method appropriate?, 15.12.3
check accessibility of type and method, 15.12.4.3
choosing the most specific method, 15.12.2.5
create frame, synchronize, transfer control, 15.12.4.5
form of a binary, 13.1
locate method to invoke, 15.12.4.4, 15.12.4.4
method invocation expressions, 15.12
compound assignment operators, 15.26.2
evaluate left-hand operand first, 15.7.1
compute target reference (if necessary), 15.12.4.1
conditional operator ? :, 15.25, 16.1.5, 16.1.6
binary numeric promotion, 5.6.2
boolean type and boolean values, 4.2.5, 4.2.5
conditional operator ? :, 16.1.5, 16.1.6
constant expressions, 15.28
floating-point operations, 4.2.4
integer operations, 4.2.2
normal annotations, 9.7.1
objects, 4.3.1
conditional-and operator &&, 15.23, 16.1.2
boolean type and boolean values, 4.2.5
conditional-and operator &&, 16.1.2
constant expressions, 15.28
conditional-or operator ||, 15.24, 16.1.3
boolean type and boolean values, 4.2.5
conditional-or operator ||, 16.1.3
constant expressions, 15.28
constant expressions, 15.28
assignment conversion, 5.2
boolean constant expressions, 16.1.1
class String, 4.3.3
conditional operator ? :, 15.25, 15.25
creation of new class instances, 12.5
detailed initialization procedure, 12.4.2
final fields and constants, 13.4.9
final variables, 4.12.4
fp-strict expressions, 15.4
initialization of fields in interfaces, 9.3.1, 9.3.1
initializers for class variables, 8.3.2.1
normal annotations, 9.7.1
objects, 4.3.1
String concatenation operator +, 15.18.1
String literals, 3.10.5
subsequent modification of final fields, 17.5.3
switch statement, 14.11
unreachable statements, 14.21, 14.21, 14.21
constructor body, 8.8.7
constructor declarations, 8.8
definite assignment, constructors, and instance initializers, 16.9
initial values of variables, 4.12.5
inner classes and enclosing instances, 8.1.3
kinds of variables, 4.12.3
this, 15.8.3
constructor declarations, 8.8
class body and member declarations, 8.1.6
creation of new class instances, 12.5
declarations, 6.1
final fields, 8.3.1.2
raw types, 4.8
return statement, 14.17, 14.17
run-time evaluation of class instance creation expressions, 15.9.4
simple expression names, 6.5.6.1
constructor modifiers, 8.8.3
annotations, 9.7
constructor overloading, 8.8.8
constructor Signature, 8.8.2
form of a binary, 13.1
constructor throws, 8.8.5
compile-time checking of Exceptions, 11.2
syntactic classification of a name according to context, 6.5.1
throw statement, 14.18
context-free grammars, 2.1
compilation units, 7.3
continue statement, 14.16
break, continue, return, and throw statements, 16.2.13
labeled statements, 14.7
names and identifiers, 6.2, 6.2
normal and abrupt completion of statements, 14.1
conversions and promotions, 5
create frame, synchronize, transfer control, 15.12.4.5
creation of new class instances, 12.5
constructor declarations, 8.8
initialization of fields, 8.3.2
instance initializers, 8.6
run-time evaluation of class instance creation expressions, 15.9.4
static fields, 8.3.1.1
String concatenation operator +, 15.18.1
when initialization occurs, 12.4.1

D

declarations, 6.1
names and identifiers, 6.2
default constructor, 8.8.9
method and constructor declarations, 13.4.12
defaults for annotation type elements, 9.6.2
definite assignment, 16
assignment operators, 15.26
final variables, 4.12.4, 4.12.4
initial values of variables, 4.12.5
inner classes and enclosing instances, 8.1.3
kinds of variables, 4.12.3
parenthesized expressions, 15.8.5
definite assignment and anonymous classes, 16.6
definite assignment and array initializers, 16.4
definite assignment and enum constants, 16.5
definite assignment and expressions, 16.1
definite assignment and member types, 16.7
definite assignment and parameters, 16.3
definite assignment and statements, 16.2
definite assignment and static initializers, 16.8
definite assignment and enum constants, 16.5
final fields, 8.3.1.2
definite assignment, constructors, and instance initializers, 16.9
final fields, 8.3.1.2
detailed initialization procedure, 12.4.2
final fields and constants, 13.4.9
form of a binary, 13.1
initialization of fields, 8.3.2
initialization of fields in interfaces, 9.3.1, 9.3.1
initializers for class variables, 8.3.2.1
simple expression names, 6.5.6.1
static initializers, 8.7
throw statement, 14.18
when initialization occurs, 12.4.1
details on protected access, 6.6.2
determining accessibility, 6.6.1
determining accessibility, 6.6.1
determining enclosing instances, 15.9.2
inner classes and enclosing instances, 8.1.3
determining the class being instantiated, 15.9.1
enums, 8.9
determining the meaning of a name, 6.5
class members, 8.2
interface members, 9.2
names and identifiers, 6.2
obscuring, 6.4.2
division operator /, 15.17.2
compound assignment operators, 15.26.2
evaluate operands before operation, 15.7.2
integer operations, 4.2.2
normal and abrupt completion of evaluation, 15.6
do statement, 14.13
boolean type and boolean values, 4.2.5
do statements, 16.2.11
do statements, 16.2.11

E

empty statement, 14.6
empty statements, 16.2.1
empty statements, 16.2.1
enhanced for statement, 14.14.2
for statements, 16.2.12
scope of a declaration, 6.3
enum body declarations, 8.9.2
default constructor, 8.8.9
enum constants, 8.9.1
definite assignment and enum constants, 16.5
definite assignment and static initializers, 16.8
switch statement, 14.11
enums, 8.9
abstract classes, 8.1.1.1
abstract methods, 8.4.3.1
annotation type elements, 9.6.1
annotations, 9.7
class declarations, 8.1
constructor body, 8.8.7
constructor modifiers, 8.8.3
declarations, 6.1
determining the class being instantiated, 15.9.1, 15.9.1
enums, 8.9
switch statement, 14.11
equality operators, 15.21
constant expressions, 15.28
erasure
assignment conversion, 5.2
checked casts and unchecked casts, 5.5.2
checked casts at run time, 5.5.3
choosing the most specific method, 15.12.2.5
class type parameters, 13.4.5
compile-time step 3: is the chosen method appropriate?, 15.12.3
constructor Signature, 8.8.2
create frame, synchronize, transfer control, 15.12.4.5
evaluate arguments, 15.12.4.2
field declarations, 13.4.8
form of a binary, 13.1, 13.1, 13.1, 13.1
inferring type arguments based on actual arguments, 15.12.2.7
method and constructor formal parameters, 13.4.14
method and constructor type parameters, 13.4.13
method invocation conversion, 5.3
method result and throws types, 15.12.2.6, 15.12.2.6
method result type, 13.4.15
method Signature, 8.4.2
phase 3: identify applicable variable arity methods, 15.12.2.4
raw types, 4.8
requirements in overriding and hiding, 8.4.8.3
type variables, 4.4
escape sequences for character and String literals, 3.10.6
character literals, 3.10.4
String literals, 3.10.5
evaluate arguments, 15.12.4.2
formal parameters, 8.4.1
variables of reference type, 4.12.2
evaluate left-hand operand first, 15.7.1
evaluate operands before operation, 15.7.2
evaluation order, 15.7
evaluation order for other expressions, 15.7.5
evaluation respects parentheses and precedence, 15.7.3
evaluation, denotation, and result, 15.1
assert statement, 14.10
evolution of annotation types, 13.5.7
evolution of classes, 13.4
evolution of enums, 13.4.26
evolution of interfaces, 13.5
evolution of packages, 13.3
example programs, 1.2
exception analysis of expressions, 11.2.1
class instance creation expressions, 15.9
compile-time checking of Exceptions, 11.2
method result and throws types, 15.12.2.6
exception analysis of statements, 11.2.2
compile-time checking of Exceptions, 11.2
explicit constructor invocations, 8.8.7.1
method throws, 8.4.6
throw statement, 14.18
try statement, 14.20
exception checking, 11.2.3
compile-time checking of Exceptions, 11.2
initialization of fields, 8.3.2
instance initializers, 8.6
method throws, 8.4.6
static initializers, 8.7
throw statement, 14.18, 14.18
try statement, 14.20
Exceptions, 11
floating-point operations, 4.2.4
integer operations, 4.2.2
normal and abrupt completion of statements, 14.1
throw statement, 14.18
execution, 12
execution of local variable declarations, 14.4.2
execution of try-catch, 14.20.1
try statement, 14.20
execution of try-finally and try-catch-finally, 14.20.2
try statement, 14.20
executions, 17.4.6
well-formed executions, 17.4.7
executions and causality requirements, 17.4.8
explicit constructor invocations, 8.8.7.1
anonymous constructors, 15.9.5.1, 15.9.5.1
constructor body, 8.8.7
creation of new class instances, 12.5
definite assignment, constructors, and instance initializers, 16.9, 16.9
exception analysis of statements, 11.2.2
form of a binary, 13.1
instance initializers, 8.6
method invocation conversion, 5.3
syntactic classification of a name according to context, 6.5.1
expression, 15.27
expression names, 15.14.1
expression statements, 14.8, 16.2.6
compile-time step 3: is the chosen method appropriate?, 15.12.3
evaluation, denotation, and result, 15.1
expression statements, 16.2.6
initialization of for statement, 14.14.1.1
expressions, 15
expressions and run-time checks, 15.5
extended try-with-resources, 14.20.3.2

F

field (constant) declarations, 9.3
annotations, 9.7
array initializers, 10.6
array variables, 10.2, 10.2
declarations, 6.1
interface body and member declarations, 9.1.4
kinds of variables, 4.12.3
obscuring, 6.4.2
shadowing, 6.4.1
syntactic classification of a name according to context, 6.5.1
field access expressions, 15.11
assignment operators, 15.26
names and identifiers, 6.2
normal and abrupt completion of evaluation, 15.6
objects, 4.3.1
simple assignment operator =, 15.26.1
static initializers, 8.7
field access using a primary, 15.11.1
field declarations, 8.3, 13.4.8, 13.5.5
array initializers, 10.6
array variables, 10.2, 10.2
class body and member declarations, 8.1.6
creation of new class instances, 12.5
declarations, 6.1
field declarations, 13.5.5
obscuring, 6.4.2
raw types, 4.8
reclassification of contextually ambiguous names, 6.5.2
resolution of symbolic references, 12.3.3
shadowing, 6.4.1
simple expression names, 6.5.6.1
syntactic classification of a name according to context, 6.5.1
field modifiers, 8.3.1
annotations, 9.7
final classes, 8.1.1.2, 13.4.2
anonymous class declarations, 15.9.5
final methods, 8.4.3.3
superclasses and subclasses, 8.1.4
verification of the binary representation, 12.3.1
final field semantics, 17.5
memory model, 17.4
final fields, 8.3.1.2
final fields and constants, 13.4.9
detailed initialization procedure, 12.4.2
field declarations, 13.5.5
final variables, 4.12.4
form of a binary, 13.1, 13.1
initialization of fields in interfaces, 9.3.1
initializers for class variables, 8.3.2.1
verification of the binary representation, 12.3.1
final methods, 8.4.3.3, 13.4.17
verification of the binary representation, 12.3.1
final variables, 4.12.4
constant expressions, 15.28, 15.28
enum body declarations, 8.9.2
final fields, 8.3.1.2, 8.3.1.2
final fields and constants, 13.4.9
form of a binary, 13.1
inner classes and enclosing instances, 8.1.3, 8.1.3
local variable declarators and types, 14.4.1
narrowing reference conversion, 5.1.6
try-with-resources, 14.20.3
when initialization occurs, 12.4.1
finalization of class instances, 12.6
class Object, 4.3.2
happens-before order, 17.4.5
kinds of variables, 4.12.3
unloading of classes and interfaces, 12.7
floating-point literals, 3.10.2
constant expressions, 15.28
lexical literals, 15.8.1
floating-point operations, 4.2.4
additive operators (+ and -) for numeric types, 15.18.2
division operator /, 15.17.2
multiplication operator *, 15.17.1
narrowing primitive conversion, 5.1.3
widening primitive conversion, 5.1.2
floating-point types, formats, and values, 4.2.3
cast expressions, 15.16
field declarations, 8.3
floating-point literals, 3.10.2
formal parameters, 8.4.1
fp-strict expressions, 15.4
lexical literals, 15.8.1, 15.8.1
local variable declarators and types, 14.4.1
narrowing primitive conversion, 5.1.3, 5.1.3
parenthesized expressions, 15.8.5
return statement, 14.17
unary minus operator -, 15.15.4
floating-point value set parameters, 4.2.3
floating-point types, formats, and values, 4.2.3, 4.2.3, 4.2.3
for statement, 14.14
array variables, 10.2
boolean type and boolean values, 4.2.5
compile-time step 3: is the chosen method appropriate?, 15.12.3
declarations, 6.1
initial values of variables, 4.12.5
kinds of variables, 4.12.3
local variable declaration statements, 14.4
for statements, 16.2.12
forbidden conversions, 5.1.12
form of a binary, 13.1
check accessibility of type and method, 15.12.4.3
compile-time step 3: is the chosen method appropriate?, 15.12.3
final variables, 4.12.4
loading of classes and interfaces, 12.2
locate method to invoke, 15.12.4.4
resolution of symbolic references, 12.3.3
top level type declarations, 7.6
when reference types are the same, 4.3.4, 4.3.4
formal parameters, 8.4.1
annotations, 9.7
array variables, 10.2
compile-time step 3: is the chosen method appropriate?, 15.12.3
declarations, 6.1
definite assignment and parameters, 16.3
evaluate arguments, 15.12.4.2
formal parameters and type parameters, 8.8.1
initial values of variables, 4.12.5
invoke test.main, 12.1.4
kinds of variables, 4.12.3
method and constructor formal parameters, 13.4.14
method declarations, 8.4
reclassification of contextually ambiguous names, 6.5.2
scope of a declaration, 6.3
shadowing and obscuring, 6.4
shared variables, 17.4.1
syntactic classification of a name according to context, 6.5.1
variables of reference type, 4.12.2
formal parameters and type parameters, 8.8.1
declarations, 6.1, 6.1
definite assignment and parameters, 16.3
initial values of variables, 4.12.5
kinds of variables, 4.12.3
reclassification of contextually ambiguous names, 6.5.2
scope of a declaration, 6.3
syntactic classification of a name according to context, 6.5.1
fp-strict expressions, 15.4
additive operators (+ and -) for numeric types, 15.18.2
cast expressions, 15.16
constant expressions, 15.28
division operator /, 15.17.2
floating-point types, formats, and values, 4.2.3
formal parameters, 8.4.1
multiplication operator *, 15.17.1
normal annotations, 9.7.1
return statement, 14.17
strictfp classes, 8.1.1.3
strictfp interfaces, 9.1.1.2
strictfp methods, 8.4.3.5
value set conversion, 5.1.13, 5.1.13
widening primitive conversion, 5.1.2
fully qualified names and canonical names, 6.7
compilation units, 7.3
form of a binary, 13.1, 13.1
import declarations, 7.5, 7.5
local class declarations, 14.3
named packages, 7.4.1
notation, 1.3
package members, 7.1
single-static-import declarations, 7.5.3
single-type-import declarations, 7.5.1
static-import-on-demand declarations, 7.5.4
top level type declarations, 7.6
type-import-on-demand declarations, 7.5.2

G

generic classes and type parameters, 8.1.2
capture conversion, 5.1.10
class instance creation expressions, 15.9
declarations, 6.1
form of a binary, 13.1
generic constructors, 8.8.4
generic methods, 8.4.4
parameterized types, 4.5
scope of a declaration, 6.3
syntactic classification of a name according to context, 6.5.1
type variables, 4.4
types, classes, and interfaces, 4.12.6
generic constructors, 8.8.4
class instance creation expressions, 15.9
form of a binary, 13.1
scope of a declaration, 6.3
type variables, 4.4
generic interfaces and type parameters, 9.1.2
capture conversion, 5.1.10
declarations, 6.1
form of a binary, 13.1
parameterized types, 4.5
scope of a declaration, 6.3
superinterfaces, 8.1.5
type variables, 4.4
types, classes, and interfaces, 4.12.6
generic methods, 8.4.4
abstract method declarations, 9.4
compile-time step 2: determine method Signature, 15.12.2
declarations, 6.1
form of a binary, 13.1
method declarations, 8.4
scope of a declaration, 6.3
type erasure, 4.6
type variables, 4.4
grammar notation, 2.4
grammars, 2

H

happens-before order, 17.4.5
executions, 17.4.6
executions and causality requirements, 17.4.8
finalization of class instances, 12.6
hiding (by class methods), 8.4.8.2
inheritance, overriding, and hiding, 8.4.8
obscuring, 6.4.2
shadowing, 6.4.1
host support for packages, 7.2
top level type declarations, 7.6

I

identifiers, 3.8
declarations, 6.1
keywords, 3.9
lexical grammar, 2.2
identify potentially applicable methods, 15.12.2.1
compile-time step 2: determine method Signature, 15.12.2
phase 1: identify matching arity methods applicable by subtyping, 15.12.2.2
phase 2: identify matching arity methods applicable by method invocation conversion, 15.12.2.3
phase 3: identify applicable variable arity methods, 15.12.2.4
identity conversion, 5.1.1
assignment conversion, 5.2
boolean type and boolean values, 4.2.5
boxing conversion, 5.1.7
capture conversion, 5.1.10
casting conversion, 5.5
method invocation conversion, 5.3
numeric promotions, 5.6
unary numeric promotion, 5.6.1
if statement, 14.9
boolean type and boolean values, 4.2.5
if statements, 16.2.7
if-then statement, 14.9.1
if statements, 16.2.7
if-then-else statement, 14.9.2
if statements, 16.2.7
implementing finalization, 12.6.1
import declarations, 7.5
compilation units, 7.3
incrementation part of for statement, 16.2.12.2
inferring type arguments based on actual arguments, 15.12.2.7
choosing the most specific method, 15.12.2.5, 15.12.2.5, 15.12.2.5
compile-time step 2: determine method Signature, 15.12.2
conditional operator ? :, 15.25
generic constructors, 8.8.4
generic methods, 8.4.4
inferring unresolved type arguments, 15.12.2.8, 15.12.2.8, 15.12.2.8
intersection types, 4.9
phase 1: identify matching arity methods applicable by subtyping, 15.12.2.2
phase 2: identify matching arity methods applicable by method invocation conversion, 15.12.2.3
phase 3: identify applicable variable arity methods, 15.12.2.4
try statement, 14.20
inferring unresolved type arguments, 15.12.2.8
inheritance and overriding, 9.4.1
abstract method declarations, 9.4
compile-time checking of Exceptions, 11.2
interface members, 9.2
inheritance, overriding, and hiding, 8.4.8
class Object, 4.3.2
inheriting methods with override-equivalent signatures, 8.4.8.4, 9.4.1.3
variables of reference type, 4.12.2
initial values of variables, 4.12.5
array initializers, 10.6
creation of new class instances, 12.5
final fields and constants, 13.4.9
initialization of fields in interfaces, 9.3.1
initializers for class variables, 8.3.2.1
kinds of variables, 4.12.3, 4.12.3, 4.12.3
preparation of a class or interface type, 12.3.2
run-time evaluation of array creation expressions, 15.10.1
run-time evaluation of class instance creation expressions, 15.9.4
variables, 4.12
initialization of classes and interfaces, 12.4
causes of Exceptions, 11.1.2
initialize test: execute initializers, 12.1.3
objects, 4.3.1
preparation of a class or interface type, 12.3.2
run-time handling of an exception, 11.3
static fields, 8.3.1.1
initialization of fields, 8.3.2
exception checking, 11.2.3
static initializers, 8.7
initialization of fields in interfaces, 9.3.1
detailed initialization procedure, 12.4.2
final fields and constants, 13.4.9
initializers for class variables, 8.3.2.1
initialization of for statement, 14.14.1.1
initialization part of for statement, 16.2.12.1
initialize test: execute initializers, 12.1.3
initializers for class variables, 8.3.2.1
definite assignment and static initializers, 16.8
detailed initialization procedure, 12.4.2
final fields and constants, 13.4.9
initialization of fields in interfaces, 9.3.1
simple expression names, 6.5.6.1
initializers for instance variables, 8.3.2.2
definite assignment, constructors, and instance initializers, 16.9
simple expression names, 6.5.6.1
inner classes and enclosing instances, 8.1.3
anonymous class declarations, 15.9.5
compile-time step 3: is the chosen method appropriate?, 15.12.3
compute target reference (if necessary), 15.12.4.1, 15.12.4.1
determining enclosing instances, 15.9.2, 15.9.2, 15.9.2
determining the class being instantiated, 15.9.1, 15.9.1
explicit constructor invocations, 8.8.7.1
form of a binary, 13.1
local class declarations, 14.3
qualified this, 15.8.4
when initialization occurs, 12.4.1
input elements and tokens, 3.5
lexical grammar, 2.2, 2.2
lexical translations, 3.2
unicode, 3.1
instance creation
abstract classes, 8.1.1.1
constructor declarations, 8.8, 8.8, 8.8
constructor overloading, 8.8.8
creation of new class instances, 12.5
exception analysis of expressions, 11.2.1
form of a binary, 13.1
initial values of variables, 4.12.5, 4.12.5
initialization of fields, 8.3.2
instance initializers, 8.6, 8.6
kinds of variables, 4.12.3
method invocation conversion, 5.3
names and identifiers, 6.2
normal and abrupt completion of evaluation, 15.6
objects, 4.3.1, 4.3.1
return statement, 14.17
run-time evaluation of class instance creation expressions, 15.9.4
run-time handling of an exception, 11.3
static fields, 8.3.1.1
String concatenation operator +, 15.18.1
String conversion, 5.1.11
syntactic classification of a name according to context, 6.5.1, 6.5.1, 6.5.1
types, classes, and interfaces, 4.12.6
when initialization occurs, 12.4.1
instance initializers, 8.6
class body and member declarations, 8.1.6
definite assignment, constructors, and instance initializers, 16.9
return statement, 14.17
simple expression names, 6.5.6.1
throw statement, 14.18
integer bitwise operators &, ^, and |, 15.22.1
binary numeric promotion, 5.6.2
integer operations, 4.2.2
shift operators, 15.19, 15.19
integer literals, 3.10.1
constant expressions, 15.28
lexical literals, 15.8.1
integer operations, 4.2.2
integral types and values, 4.2.1
character literals, 3.10.4
integer literals, 3.10.1
lexical literals, 15.8.1, 15.8.1, 15.8.1
interaction with the memory model, 12.6.2
interactions of waits, notification, and interruption, 17.2.4
interface body and member declarations, 9.1.4
scope of a declaration, 6.3
interface declarations, 9.1
declarations, 6.1
types, classes, and interfaces, 4.12.6
interface members, 9.2, 13.5.3
check accessibility of type and method, 15.12.4.3
declarations, 6.1
form of a binary, 13.1, 13.1
interface methods
abstract classes, 8.1.1.1
annotations, 9.7
declarations, 6.1, 6.1
interface body and member declarations, 9.1.4
raw types, 4.8
syntactic classification of a name according to context, 6.5.1, 6.5.1, 6.5.1
interface modifiers, 9.1.1
annotations, 9.7
static member type declarations, 8.5.1
top level type declarations, 7.6
interface type parameters, 13.5.4
interfaces, 9
array creation expressions, 15.10
package members, 7.1
qualified expression names, 6.5.6.2
reclassification of contextually ambiguous names, 6.5.2
reference types and values, 4.3
top level type declarations, 7.6
interruptions, 17.2.3
intersection types, 4.9
form of a binary, 13.1, 13.1
type variables, 4.4
introduction, 1
invoke test.main, 12.1.4
iteration of for statement, 14.14.1.2

J

Java Virtual Machine startup, 12.1

K

keywords, 3.9
identifiers, 3.8
lexical grammar, 2.2
primitive types and values, 4.2
kinds and causes of Exceptions, 11.1
kinds of conversion, 5.1
kinds of Exceptions, 11.1.1
compile-time checking of Exceptions, 11.2, 11.2
generic classes and type parameters, 8.1.2
method throws, 8.4.6, 8.4.6
narrowing primitive conversion, 5.1.3
throw statement, 14.18
widening primitive conversion, 5.1.2
kinds of types and values, 4.1
capture conversion, 5.1.10
lexical literals, 15.8.1
literals, 3.10
null literal, 3.10.7
throw statement, 14.18
kinds of variables, 4.12.3

L

labeled statements, 14.7, 16.2.5
break statement, 14.15
continue statement, 14.16
labeled statements, 14.7, 16.2.5
names and identifiers, 6.2, 6.2
lexical grammar, 2.2
lexical literals, 15.8.1
kinds of types and values, 4.1
lexical structure, 3
lexical grammar, 2.2
lexical translations, 3.2
line terminators, 3.4
character literals, 3.10.4
input elements and tokens, 3.5
lexical translations, 3.2
white space, 3.6
link test: verify, prepare, (optionally) resolve, 12.1.2
linking of classes and interfaces, 12.3
causes of Exceptions, 11.1.2
check accessibility of type and method, 15.12.4.3
link test: verify, prepare, (optionally) resolve, 12.1.2
resolution of symbolic references, 12.3.3
literals, 3.10
lexical grammar, 2.2
lexical literals, 15.8.1
load the class test, 12.1.1
loading of classes and interfaces, 12.2
causes of Exceptions, 11.1.2
class literals, 15.8.2
load the class test, 12.1.1
superclasses and subclasses, 8.1.4
superinterfaces and subinterfaces, 9.1.3
loading process, 12.2.1
local class declaration statements, 16.2.3
local class declarations, 14.3
class instance creation expressions, 15.9
class modifiers, 8.1.1
determining enclosing instances, 15.9.2, 15.9.2
explicit constructor invocations, 8.8.7.1
form of a binary, 13.1
inner classes and enclosing instances, 8.1.3
local class declaration statements, 16.2.3
reclassification of contextually ambiguous names, 6.5.2
shadowing and obscuring, 6.4
local variable declaration statements, 14.4, 16.2.4
array initializers, 10.6
declarations, 6.1
initial values of variables, 4.12.5
initialization of fields, 8.3.2
initialization of for statement, 14.14.1.1
initialization part of for statement, 16.2.12.1
kinds of variables, 4.12.3
local variable declaration statements, 16.2.4
objects, 4.3.1
reclassification of contextually ambiguous names, 6.5.2
scope of a declaration, 6.3
shadowing and obscuring, 6.4
shared variables, 17.4.1
syntactic classification of a name according to context, 6.5.1
local variable declarators and types, 14.4.1
annotations, 9.7
array variables, 10.2
locate method to invoke, 15.12.4.4
overriding (by instance methods), 8.4.8.1
logical complement operator !, 15.15.6, 16.1.4
boolean type and boolean values, 4.2.5
constant expressions, 15.28
logical complement operator !, 16.1.4

M

marker annotations, 9.7.2
meaning of expression names, 6.5.6
expression names, 15.14.1
names and identifiers, 6.2
meaning of method names, 6.5.7
names and identifiers, 6.2
meaning of package names, 6.5.3
names and identifiers, 6.2
meaning of packageortypenames, 6.5.4
meaning of type names, 6.5.5
names and identifiers, 6.2
reference types and values, 4.3
member type declarations, 8.5, 9.5
class body and member declarations, 8.1.6
class instance creation expressions, 15.9, 15.9
class modifiers, 8.1.1, 8.1.1
declarations, 6.1, 6.1, 6.1, 6.1
definite assignment and member types, 16.7, 16.7
determining enclosing instances, 15.9.2, 15.9.2
determining the class being instantiated, 15.9.1, 15.9.1
explicit constructor invocations, 8.8.7.1
form of a binary, 13.1, 13.1
inner classes and enclosing instances, 8.1.3, 8.1.3
interface body and member declarations, 9.1.4
interface modifiers, 9.1.1
member type declarations, 9.5
obscuring, 6.4.2, 6.4.2
qualified type names, 6.5.5.2, 6.5.5.2
reclassification of contextually ambiguous names, 6.5.2, 6.5.2, 6.5.2, 6.5.2
reference types and values, 4.3, 4.3
shadowing, 6.4.1, 6.4.1
static-import-on-demand declarations, 7.5.4, 7.5.4
type-import-on-demand declarations, 7.5.2, 7.5.2
members and constructors of parameterized types, 4.5.2
memory model, 17.4
interaction with the memory model, 12.6.2
volatile fields, 8.3.1.4
method and constructor body, 13.4.22
method and constructor declarations, 13.4.12
method and constructor formal parameters, 13.4.14
method result type, 13.4.15
resolution of symbolic references, 12.3.3
method and constructor formal parameters, 13.4.14
abstract methods, 13.5.6
method and constructor overloading, 13.4.23
abstract methods, 13.5.6
method and constructor throws, 13.4.21
abstract methods, 13.5.6
method and constructor type parameters, 13.4.13
class type parameters, 13.4.5
method body, 8.4.7
constructor body, 8.8.7
method declarations, 8.4
method declarations, 8.4
class body and member declarations, 8.1.6
declarations, 6.1
evaluation, denotation, and result, 15.1
raw types, 4.8
return statement, 14.17, 14.17, 14.17
simple expression names, 6.5.6.1
syntactic classification of a name according to context, 6.5.1
method invocation conversion, 5.3
create frame, synchronize, transfer control, 15.12.4.5
formal parameters, 8.4.1
inferring type arguments based on actual arguments, 15.12.2.7
phase 2: identify matching arity methods applicable by method invocation conversion, 15.12.2.3
method invocation expressions, 15.12
anonymous constructors, 15.9.5.1, 15.9.5.1
compute target reference (if necessary), 15.12.4.1
constructor declarations, 8.8
evaluation, denotation, and result, 15.1
exception analysis of expressions, 11.2.1
expressions and run-time checks, 15.5
formal parameters, 8.4.1
happens-before order, 17.4.5
hiding (by class methods), 8.4.8.2
initial values of variables, 4.12.5
initialization of fields in interfaces, 9.3.1
initializers for class variables, 8.3.2.1
initializers for instance variables, 8.3.2.2
instance initializers, 8.6
kinds of variables, 4.12.3
method invocation conversion, 5.3
names and identifiers, 6.2
normal and abrupt completion of evaluation, 15.6, 15.6
objects, 4.3.1
overloading, 8.4.9
overriding (by instance methods), 8.4.8.1
return statement, 14.17
run-time handling of an exception, 11.3
static initializers, 8.7
syntactic classification of a name according to context, 6.5.1, 6.5.1
this, 15.8.3
method modifiers, 8.4.3
abstract classes, 8.1.1.1
annotations, 9.7
method declarations, 8.4
objects, 4.3.1
method overriding, 13.4.24
method result and throws types, 15.12.2.6
choosing the constructor and its arguments, 15.9.3
exception analysis of expressions, 11.2.1, 11.2.1
exception analysis of statements, 11.2.2
method result type, 13.4.15
abstract methods, 13.5.6
method return type, 8.4.5
abstract classes, 8.1.1.1
class literals, 15.8.2
constructor declarations, 8.8
inheriting methods with override-equivalent signatures, 8.4.8.4
method declarations, 8.4
requirements in overriding and hiding, 8.4.8.3
type erasure, 4.6
method Signature, 8.4.2
abstract classes, 8.1.1.1
abstract method declarations, 9.4
abstract methods, 8.4.3.1
choosing the most specific method, 15.12.2.5
constructor Signature, 8.8.2
form of a binary, 13.1
hiding (by class methods), 8.4.8.2
inheriting methods with override-equivalent signatures, 8.4.8.4, 9.4.1.3
interface members, 9.2
method declarations, 8.4
overloading, 9.4.2
overriding (by instance methods), 8.4.8.1, 9.4.1.1
requirements in overriding and hiding, 8.4.8.3
type erasure, 4.6
method throws, 8.4.6
compile-time checking of Exceptions, 11.2
constructor throws, 8.8.5
inheriting methods with override-equivalent signatures, 8.4.8.4
method declarations, 8.4
syntactic classification of a name according to context, 6.5.1
throw statement, 14.18
multiplication operator *, 15.17.1
multiplicative operators, 15.17
binary numeric promotion, 5.6.2
constant expressions, 15.28
floating-point operations, 4.2.4
integer operations, 4.2.2

N

name classification
access control, 6.6
named packages, 7.4.1
annotations, 9.7
names, 6
names and identifiers, 6.2
determining the class being instantiated, 15.9.1, 15.9.1
import declarations, 7.5
local class declarations, 14.3
named packages, 7.4.1
shadowing and obscuring, 6.4
narrowing primitive conversion, 5.1.3
casting conversion, 5.5
floating-point operations, 4.2.4
narrowing primitive conversion, 5.1.3
postfix decrement operator --, 15.14.3
postfix increment operator ++, 15.14.2
prefix decrement operator --, 15.15.2
prefix increment operator ++, 15.15.1
widening and narrowing primitive conversion, 5.1.4
narrowing reference conversion, 5.1.6
casting conversion, 5.5
native methods, 8.4.3.4, 13.4.18
new keyword
abstract classes, 8.1.1.1
constructor declarations, 8.8, 8.8
constructor overloading, 8.8.8
creation of new class instances, 12.5
exception analysis of expressions, 11.2.1
form of a binary, 13.1
initial values of variables, 4.12.5, 4.12.5
instance initializers, 8.6
kinds of variables, 4.12.3
method invocation conversion, 5.3
names and identifiers, 6.2
normal and abrupt completion of evaluation, 15.6
objects, 4.3.1, 4.3.1
return statement, 14.17
run-time handling of an exception, 11.3
String conversion, 5.1.11
syntactic classification of a name according to context, 6.5.1, 6.5.1, 6.5.1
types, classes, and interfaces, 4.12.6
non-atomic treatment of double and long, 17.7
normal and abrupt completion of evaluation, 15.6
causes of Exceptions, 11.1.2
normal and abrupt completion of statements, 14.1, 14.1
run-time handling of an exception, 11.3
normal and abrupt completion of statements, 14.1
method body, 8.4.7
normal and abrupt completion of evaluation, 15.6
run-time handling of an exception, 11.3
normal annotations, 9.7.1
notation, 1.3
notification, 17.2.2
null literal, 3.10.7
compile-time step 3: is the chosen method appropriate?, 15.12.3
identifiers, 3.8
kinds of types and values, 4.1
lexical literals, 15.8.1
numeric promotions, 5.6
floating-point operations, 4.2.4
integer operations, 4.2.2
numerical comparison operators <, <=, >, and >=, 15.20.1
binary numeric promotion, 5.6.2
floating-point operations, 4.2.4
floating-point types, formats, and values, 4.2.3
integer operations, 4.2.2
numerical equality operators == and !=, 15.21.1
binary numeric promotion, 5.6.2
floating-point operations, 4.2.4
floating-point types, formats, and values, 4.2.3
integer operations, 4.2.2

O

object creation
constructor declarations, 8.8
initialization of fields, 8.3.2
instance initializers, 8.6
run-time evaluation of class instance creation expressions, 15.9.4
static fields, 8.3.1.1
String concatenation operator +, 15.18.1
when initialization occurs, 12.4.1
objects, 4.3.1
checked casts at run time, 5.5.3, 5.5.3
String literals, 3.10.5
obscuring, 6.4.2
labeled statements, 14.7
shadowing, 6.4.1
observability of a package, 7.4.3
qualified package names, 6.5.3.2
scope of a declaration, 6.3
observable behavior and nonterminating executions, 17.4.9
actions, 17.4.2, 17.4.2
operators, 3.12
input elements and tokens, 3.5
lexical grammar, 2.2
operators ++ and --, 16.1.9
organization of the specification, 1.1
other expressions, 16.1.10
other expressions of type boolean, 16.1.7
overload resolution
choosing the constructor and its arguments, 15.9.3, 15.9.3
compile-time step 1: determine class or interface to search, 15.12.1
compile-time step 2: determine method Signature, 15.12.2, 15.12.2, 15.12.2, 15.12.2, 15.12.2, 15.12.2, 15.12.2, 15.12.2
enum constants, 8.9.1
inferring type arguments based on actual arguments, 15.12.2.7, 15.12.2.7, 15.12.2.7
method and constructor overloading, 13.4.23
overloading, 8.4.9
phase 1: identify matching arity methods applicable by subtyping, 15.12.2.2, 15.12.2.2, 15.12.2.2
phase 2: identify matching arity methods applicable by method invocation conversion, 15.12.2.3, 15.12.2.3, 15.12.2.3
phase 3: identify applicable variable arity methods, 15.12.2.4, 15.12.2.4
what binary compatibility is and is not, 13.2
overloading, 8.4.9, 9.4.2
constructor overloading, 8.8.8
overriding (by instance methods), 8.4.8.1, 9.4.1.1
abstract classes, 8.1.1.1
final classes, 8.1.1.2
inheritance, overriding, and hiding, 8.4.8
locate method to invoke, 15.12.4.4

P

package declarations, 7.4
compilation units, 7.3
declarations, 6.1
syntactic classification of a name according to context, 6.5.1
package members, 7.1
packages, 7
parameterized types, 4.5
capture conversion, 5.1.10, 5.1.10
checked casts and unchecked casts, 5.5.2
class literals, 15.8.2
determining the class being instantiated, 15.9.1, 15.9.1, 15.9.1, 15.9.1
field declarations, 13.4.8
generic classes and type parameters, 8.1.2
generic interfaces and type parameters, 9.1.2
method and constructor formal parameters, 13.4.14
method result type, 13.4.15
raw types, 4.8
reference type casting, 5.5.1
reference types and values, 4.3
syntactic classification of a name according to context, 6.5.1
type erasure, 4.6
types, classes, and interfaces, 4.12.6
parenthesized expressions, 15.8.5
constant expressions, 15.28
phase 1: identify matching arity methods applicable by subtyping, 15.12.2.2
compile-time step 2: determine method Signature, 15.12.2, 15.12.2
inferring type arguments based on actual arguments, 15.12.2.7
phase 2: identify matching arity methods applicable by method invocation conversion, 15.12.2.3
compile-time step 2: determine method Signature, 15.12.2, 15.12.2
inferring type arguments based on actual arguments, 15.12.2.7
phase 1: identify matching arity methods applicable by subtyping, 15.12.2.2
phase 3: identify applicable variable arity methods, 15.12.2.4
compile-time step 2: determine method Signature, 15.12.2, 15.12.2
inferring type arguments based on actual arguments, 15.12.2.7
phase 2: identify matching arity methods applicable by method invocation conversion, 15.12.2.3
postfix decrement operator --, 15.14.3
floating-point operations, 4.2.4, 4.2.4
integer operations, 4.2.2, 4.2.2
normal and abrupt completion of evaluation, 15.6
operators ++ and --, 16.1.9
variables, 4.12
postfix expressions, 15.14
syntactic classification of a name according to context, 6.5.1
postfix increment operator ++, 15.14.2
floating-point operations, 4.2.4, 4.2.4
integer operations, 4.2.2, 4.2.2
normal and abrupt completion of evaluation, 15.6
operators ++ and --, 16.1.9
variables, 4.12
potentially applicable methods
compile-time step 2: determine method Signature, 15.12.2
phase 1: identify matching arity methods applicable by subtyping, 15.12.2.2
phase 2: identify matching arity methods applicable by method invocation conversion, 15.12.2.3
phase 3: identify applicable variable arity methods, 15.12.2.4
predefined annotation types, 9.6.3
prefix decrement operator --, 15.15.2
floating-point operations, 4.2.4, 4.2.4
integer operations, 4.2.2, 4.2.2
normal and abrupt completion of evaluation, 15.6
operators ++ and --, 16.1.9
variables, 4.12
prefix increment operator ++, 15.15.1
floating-point operations, 4.2.4, 4.2.4
integer operations, 4.2.2, 4.2.2
normal and abrupt completion of evaluation, 15.6
operators ++ and --, 16.1.9
variables, 4.12
preparation of a class or interface type, 12.3.2
kinds of variables, 4.12.3
link test: verify, prepare, (optionally) resolve, 12.1.2
preventing instantiation of a class, 8.8.10
primary expressions, 15.8
postfix expressions, 15.14
primitive types and values, 4.2
class literals, 15.8.2
evaluation, denotation, and result, 15.1
kinds of types and values, 4.1
literals, 3.10
reifiable types, 4.7
unboxing conversion, 5.1.8
variables, 4.12
program exit, 12.8
programs and program order, 17.4.3
happens-before order, 17.4.5
synchronization order, 17.4.4
public classes, 13.4.3
public interfaces, 13.5.1

Q

qualified access to a protected constructor, 6.6.2.2
qualified expression names, 6.5.6.2
access control, 6.6
constant expressions, 15.28
field access expressions, 15.11
field declarations, 8.3
qualified method names, 6.5.7.2
qualified package names, 6.5.3.2
qualified packageortypenames, 6.5.4.2
qualified this, 15.8.4
syntactic classification of a name according to context, 6.5.1
qualified type names, 6.5.5.2
access control, 6.6

R

raw types, 4.8
assignment conversion, 5.2
method invocation conversion, 5.3
reifiable types, 4.7
unchecked conversion, 5.1.9
variables of reference type, 4.12.2
reading final fields during construction, 17.5.2
reclassification of contextually ambiguous names, 6.5.2
reference equality operators == and !=, 15.21.3
objects, 4.3.1
reference type casting, 5.5.1
casting conversion, 5.5
reference types and values, 4.3
class literals, 15.8.2
determining the class being instantiated, 15.9.1
evaluation, denotation, and result, 15.1
initial values of variables, 4.12.5
kinds of types and values, 4.1
variables, 4.12
references, 1.5
reifiable types, 4.7
@SafeVarargs, 9.6.3.7
array creation expressions, 15.10
array initializers, 10.6
expressions and run-time checks, 15.5, 15.5
formal parameters, 8.4.1
type comparison operator instanceof, 15.20.2
relational operators, 15.20
constant expressions, 15.28
relationship to predefined classes and interfaces, 1.4
remainder operator %, 15.17.3
evaluate operands before operation, 15.7.2
floating-point operations, 4.2.4
integer operations, 4.2.2
normal and abrupt completion of evaluation, 15.6
requirements in overriding, 9.4.1.2
variables of reference type, 4.12.2
requirements in overriding and hiding, 8.4.8.3
compile-time checking of Exceptions, 11.2
method throws, 8.4.6
requirements in overriding, 9.4.1.2, 9.4.1.2, 9.4.1.2
variables of reference type, 4.12.2
resolution of symbolic references, 12.3.3
link test: verify, prepare, (optionally) resolve, 12.1.2
restrictions on the use of fields during initialization, 8.3.2.3
when initialization occurs, 12.4.1, 12.4.1
return statement, 14.17
break, continue, return, and throw statements, 16.2.13
constructor body, 8.8.7
instance initializers, 8.6
method body, 8.4.7, 8.4.7
normal and abrupt completion of statements, 14.1
static initializers, 8.7
run-time evaluation of array access, 15.13.1
evaluation order for other expressions, 15.7.5
run-time evaluation of array creation expressions, 15.10.1
evaluation order for other expressions, 15.7.5
run-time evaluation of class instance creation expressions, 15.9.4
evaluation order for other expressions, 15.7.5
throw statement, 14.18
run-time evaluation of method invocation, 15.12.4
evaluation order for other expressions, 15.7.5
overloading, 8.4.9
run-time handling of an exception, 11.3
expressions and run-time checks, 15.5
initial values of variables, 4.12.5
kinds of variables, 4.12.3
throw statement, 14.18
try statement, 14.20

S

scope of a declaration, 6.3
basic for statement, 14.14.1
class body and member declarations, 8.1.6
class declarations, 8.1
class literals, 15.8.2
compile-time step 1: determine class or interface to search, 15.12.1
enhanced for statement, 14.14.2, 14.14.2
enum constants, 8.9.1
field declarations, 8.3
formal parameters, 8.4.1
generic classes and type parameters, 8.1.2
generic constructors, 8.8.4
generic interfaces and type parameters, 9.1.2
generic methods, 8.4.4
import declarations, 7.5
interface body and member declarations, 9.1.4
interface declarations, 9.1
local class declarations, 14.3
local variable declarators and types, 14.4.1
member type declarations, 8.5
method declarations, 8.4
named packages, 7.4.1
reclassification of contextually ambiguous names, 6.5.2, 6.5.2
simple package names, 6.5.3.1
top level type declarations, 7.6
try statement, 14.20
try-with-resources, 14.20.3
type variables, 4.4
semantics of final fields, 17.5.1
separators, 3.11
lexical grammar, 2.2
shadowing, 6.4.1
compile-time step 1: determine class or interface to search, 15.12.1
identify potentially applicable methods, 15.12.2.1
obscuring, 6.4.2
scope of a declaration, 6.3
simple expression names, 6.5.6.1
simple method names, 6.5.7.1
shadowing and obscuring, 6.4
basic for statement, 14.14.1
class body and member declarations, 8.1.6
class declarations, 8.1
enhanced for statement, 14.14.2
enum constants, 8.9.1
field declarations, 8.3
formal parameters, 8.4.1
generic classes and type parameters, 8.1.2
generic constructors, 8.8.4
import declarations, 7.5
interface declarations, 9.1
local class declarations, 14.3
local variable declarators and types, 14.4.1
member type declarations, 8.5
method declarations, 8.4
named packages, 7.4.1
top level type declarations, 7.6
try statement, 14.20
try-with-resources, 14.20.3
shared variables, 17.4.1
happens-before order, 17.4.5
shift operators, 15.19
constant expressions, 15.28
integer operations, 4.2.2
unary numeric promotion, 5.6.1
simple assignment operator =, 15.26.1
assignment conversion, 5.2
expressions and run-time checks, 15.5, 15.5
normal and abrupt completion of evaluation, 15.6, 15.6
simple expression names, 6.5.6.1
constant expressions, 15.28
field access expressions, 15.11
simple method names, 6.5.7.1
simple package names, 6.5.3.1
simple packageortypenames, 6.5.4.1
simple type names, 6.5.5.1
single-element annotations, 9.7.3
annotation type elements, 9.6.1
single-static-import declarations, 7.5.3
compile-time step 1: determine class or interface to search, 15.12.1
identify potentially applicable methods, 15.12.2.1
import declarations, 7.5
reclassification of contextually ambiguous names, 6.5.2, 6.5.2
scope of a declaration, 6.3
simple method names, 6.5.7.1
single-type-import declarations, 7.5.1
syntactic classification of a name according to context, 6.5.1
single-type-import declarations, 7.5.1
declarations, 6.1
import declarations, 7.5
reclassification of contextually ambiguous names, 6.5.2
scope of a declaration, 6.3
single-static-import declarations, 7.5.3
syntactic classification of a name according to context, 6.5.1
top level type declarations, 7.6
sleep and yield, 17.3
statements, 14.5
static fields, 8.3.1.1, 13.4.10
generic classes and type parameters, 8.1.2
kinds of variables, 4.12.3, 4.12.3
when initialization occurs, 12.4.1
static initializers, 8.7, 13.4.25
class body and member declarations, 8.1.6
definite assignment and static initializers, 16.8
exception checking, 11.2.3
final fields, 8.3.1.2
generic classes and type parameters, 8.1.2
inner classes and enclosing instances, 8.1.3
return statement, 14.17
simple expression names, 6.5.6.1
static initializers, 13.4.25
throw statement, 14.18
static member type declarations, 8.5.1
anonymous class declarations, 15.9.5
class modifiers, 8.1.1
generic classes and type parameters, 8.1.2
interface modifiers, 9.1.1, 9.1.1
qualified type names, 6.5.5.2
static methods, 8.4.3.2, 13.4.19
generic classes and type parameters, 8.1.2
simple expression names, 6.5.6.1
static-import-on-demand declarations, 7.5.4
compile-time step 1: determine class or interface to search, 15.12.1
identify potentially applicable methods, 15.12.2.1
import declarations, 7.5
reclassification of contextually ambiguous names, 6.5.2, 6.5.2
scope of a declaration, 6.3
simple method names, 6.5.7.1
syntactic classification of a name according to context, 6.5.1
type-import-on-demand declarations, 7.5.2
strictfp classes, 8.1.1.3
fp-strict expressions, 15.4
strictfp interfaces, 9.1.1.2
fp-strict expressions, 15.4
strictfp methods, 8.4.3.5
fp-strict expressions, 15.4
String concatenation operator +, 15.18.1
boolean type and boolean values, 4.2.5
class String, 4.3.3
constructor declarations, 8.8
creation of new class instances, 12.5
floating-point operations, 4.2.4
integer operations, 4.2.2
normal and abrupt completion of evaluation, 15.6
objects, 4.3.1, 4.3.1
String conversion, 5.4
types, classes, and interfaces, 4.12.6
String conversion, 5.1.11, 5.4
boolean type and boolean values, 4.2.5
String concatenation operator +, 15.18.1
String conversion, 5.4
String literals, 3.10.5
class String, 4.3.3
comments, 3.7
constant expressions, 15.28
creation of new class instances, 12.5
escape sequences for character and String literals, 3.10.6
lexical literals, 15.8.1
reference equality operators == and !=, 15.21.3
unicode, 3.1
strings
lexical literals, 15.8.1
literals, 3.10
objects, 4.3.1
String literals, 3.10.5, 3.10.5
subsequent modification of final fields, 17.5.3
subtyping, 4.10
checked casts and unchecked casts, 5.5.2
method throws, 8.4.6
narrowing reference conversion, 5.1.6
parameterized types, 4.5
phase 1: identify matching arity methods applicable by subtyping, 15.12.2.2
type arguments and wildcards, 4.5.1
widening reference conversion, 5.1.5
subtyping among array types, 4.10.3
array types, 10.1
subtyping among class and interface types, 4.10.2
try statement, 14.20
subtyping among primitive types, 4.10.1
superclasses and subclasses, 8.1.4
class members, 8.2
class Object, 4.3.2
enums, 8.9
final classes, 8.1.1.2
kinds of variables, 4.12.3
loading process, 12.2.1
syntactic classification of a name according to context, 6.5.1
superclasses and superinterfaces, 13.4.4
loading process, 12.2.1
superinterfaces, 13.5.2
verification of the binary representation, 12.3.1
superinterfaces, 8.1.5, 13.5.2
abstract classes, 8.1.1.1
checked casts at run time, 5.5.3
class members, 8.2
superinterfaces and subinterfaces, 9.1.3
syntactic classification of a name according to context, 6.5.1
types, classes, and interfaces, 4.12.6
superinterfaces and subinterfaces, 9.1.3
loading process, 12.2.1
superclasses and subclasses, 8.1.4
superinterfaces, 8.1.5
syntactic classification of a name according to context, 6.5.1
switch statement, 14.11
scope of a declaration, 6.3
switch statements, 16.2.9
switch statements, 16.2.9
synchronization, 17.1
objects, 4.3.1
synchronized methods, 8.4.3.6
synchronized statement, 14.19
volatile fields, 8.3.1.4
synchronization order, 17.4.4
actions, 17.4.2
interaction with the memory model, 12.6.2
synchronized methods, 8.4.3.6, 13.4.20
class Object, 4.3.2
synchronization, 17.1
synchronized statement, 14.19
synchronized statement, 14.19
create frame, synchronize, transfer control, 15.12.4.5
objects, 4.3.1
synchronization, 17.1
synchronized statements, 16.2.14
synchronized statements, 16.2.14
syntactic classification of a name according to context, 6.5.1
access control, 6.6
syntactic grammar, 2.3
compilation units, 7.3
input elements and tokens, 3.5
lexical translations, 3.2
syntax, 18

T

this, 15.8.3
initialization of fields in interfaces, 9.3.1
initializers for class variables, 8.3.2.1
initializers for instance variables, 8.3.2.2
instance initializers, 8.6
static initializers, 8.7
static methods, 8.4.3.2
threads and locks, 17
objects, 4.3.1
throw statement, 14.18
throw statement, 14.18
break, continue, return, and throw statements, 16.2.13
causes of Exceptions, 11.1.2
exception analysis of statements, 11.2.2
initial values of variables, 4.12.5
kinds of variables, 4.12.3
normal and abrupt completion of statements, 14.1, 14.1
run-time handling of an exception, 11.3
top level type declarations, 7.6
class instance creation expressions, 15.9
class modifiers, 8.1.1
compilation units, 7.3
determining accessibility, 6.6.1
form of a binary, 13.1
host support for packages, 7.2
interface modifiers, 9.1.1
package members, 7.1, 7.1
scope of a declaration, 6.3, 6.3, 6.3
shadowing, 6.4.1
single-static-import declarations, 7.5.3
single-type-import declarations, 7.5.1
when initialization occurs, 12.4.1
transient fields, 8.3.1.3, 13.4.11
try statement, 14.20
array variables, 10.2
compile-time checking of Exceptions, 11.2, 11.2
declarations, 6.1
definite assignment and parameters, 16.3
exception analysis of statements, 11.2.2
expressions and run-time checks, 15.5, 15.5
final variables, 4.12.4, 4.12.4
initial values of variables, 4.12.5
kinds of variables, 4.12.3
labeled statements, 14.7
reclassification of contextually ambiguous names, 6.5.2
run-time handling of an exception, 11.3
scope of a declaration, 6.3
shadowing and obscuring, 6.4
shared variables, 17.4.1
syntactic classification of a name according to context, 6.5.1
throw statement, 14.18, 14.18, 14.18
try statements, 16.2.15
try statements, 16.2.15
try-catch statement
try statement, 14.20
try-catch-finally statement
try statement, 14.20
try-finally statement
try statement, 14.20
try-with-resources, 14.20.3
final variables, 4.12.4
scope of a declaration, 6.3
shadowing and obscuring, 6.4
try statement, 14.20
try-with-resources (basic)
extended try-with-resources, 14.20.3.2
type arguments and wildcards, 4.5.1
capture conversion, 5.1.10
checked casts and unchecked casts, 5.5.2
class instance creation expressions, 15.9, 15.9
reference types and values, 4.3
reifiable types, 4.7
subtyping among class and interface types, 4.10.2
syntactic classification of a name according to context, 6.5.1, 6.5.1, 6.5.1
types, classes, and interfaces, 4.12.6
unchecked conversion, 5.1.9
type comparison operator instanceof, 15.20.2
expressions and run-time checks, 15.5
objects, 4.3.1
syntactic classification of a name according to context, 6.5.1
type erasure, 4.6
assignment conversion, 5.2
checked casts and unchecked casts, 5.5.2
checked casts at run time, 5.5.3
choosing the most specific method, 15.12.2.5
class type parameters, 13.4.5
compile-time step 3: is the chosen method appropriate?, 15.12.3
constructor Signature, 8.8.2
create frame, synchronize, transfer control, 15.12.4.5
evaluate arguments, 15.12.4.2
field declarations, 13.4.8
form of a binary, 13.1, 13.1, 13.1, 13.1
inferring type arguments based on actual arguments, 15.12.2.7
method and constructor formal parameters, 13.4.14
method and constructor type parameters, 13.4.13
method invocation conversion, 5.3
method result and throws types, 15.12.2.6, 15.12.2.6
method result type, 13.4.15
method Signature, 8.4.2
phase 3: identify applicable variable arity methods, 15.12.2.4
raw types, 4.8
requirements in overriding and hiding, 8.4.8.3
type variables, 4.4
type of a constructor, 8.8.6
members and constructors of parameterized types, 4.5.2
type of an expression, 15.3
type variables, 4.4
class literals, 15.8.2
declarations, 6.1
field declarations, 13.4.8
generic classes and type parameters, 8.1.2
generic constructors, 8.8.4
generic interfaces and type parameters, 9.1.2
generic methods, 8.4.4
method and constructor formal parameters, 13.4.14
method result type, 13.4.15
reference types and values, 4.3
type erasure, 4.6
types, classes, and interfaces, 4.12.6
type-import-on-demand declarations, 7.5.2
declarations, 6.1
import declarations, 7.5
reclassification of contextually ambiguous names, 6.5.2
scope of a declaration, 6.3
shadowing, 6.4.1
static-import-on-demand declarations, 7.5.4
syntactic classification of a name according to context, 6.5.1
types
capture conversion, 5.1.10
lexical literals, 15.8.1
literals, 3.10
null literal, 3.10.7
throw statement, 14.18
types, classes, and interfaces, 4.12.6
types, values, and variables, 4

U

unary minus operator -, 15.15.4
constant expressions, 15.28
floating-point operations, 4.2.4
integer literals, 3.10.1, 3.10.1
integer operations, 4.2.2
unary numeric promotion, 5.6.1
unary numeric promotion, 5.6.1
array access, 10.4
array access expressions, 15.13
array creation expressions, 15.10
bitwise complement operator ~, 15.15.5
numeric promotions, 5.6
shift operators, 15.19
unary minus operator -, 15.15.4
unary plus operator +, 15.15.3
unary operators, 15.15
unary plus operator +, 15.15.3
constant expressions, 15.28
floating-point operations, 4.2.4
integer operations, 4.2.2
unary numeric promotion, 5.6.1
unboxing conversion, 5.1.8
additive operators, 15.18, 15.18
array creation expressions, 15.10
assert statement, 14.10
assignment conversion, 5.2
binary numeric promotion, 5.6.2
bitwise complement operator ~, 15.15.5
boolean equality operators == and !=, 15.21.2
boolean logical operators &, ^, and |, 15.22.2
casting conversion, 5.5, 5.5, 5.5
conditional operator ? :, 15.25, 15.25
conditional-and operator &&, 15.23, 15.23
conditional-or operator ||, 15.24, 15.24
do statement, 14.13
equality operators, 15.21
floating-point operations, 4.2.4
if-then statement, 14.9.1
if-then-else statement, 14.9.2
integer bitwise operators &, ^, and |, 15.22.1
integer operations, 4.2.2
iteration of for statement, 14.14.1.2
logical complement operator !, 15.15.6
method invocation conversion, 5.3
multiplicative operators, 15.17
numeric promotions, 5.6
numerical comparison operators <, <=, >, and >=, 15.20.1
numerical equality operators == and !=, 15.21.1
postfix decrement operator --, 15.14.3
postfix increment operator ++, 15.14.2
prefix decrement operator --, 15.15.2
prefix increment operator ++, 15.15.1
switch statement, 14.11
unary minus operator -, 15.15.4
unary numeric promotion, 5.6.1, 5.6.1
unary plus operator +, 15.15.3
while statement, 14.12
unchecked conversion, 5.1.9
@SafeVarargs, 9.6.3.7
assignment conversion, 5.2
casting conversion, 5.5, 5.5
members and constructors of parameterized types, 4.5.2
method invocation conversion, 5.3
method return type, 8.4.5
phase 1: identify matching arity methods applicable by subtyping, 15.12.2.2
variables of reference type, 4.12.2
unicode, 3.1
character literals, 3.10.4
lexical grammar, 2.2
primitive types and values, 4.2
unicode escapes, 3.3
unicode escapes, 3.3
escape sequences for character and String literals, 3.10.6
input elements and tokens, 3.5
lexical translations, 3.2
unicode, 3.1
unloading of classes and interfaces, 12.7
kinds of variables, 4.12.3
unnamed packages, 7.4.2
compilation units, 7.3
unreachable statements, 14.21
final fields and constants, 13.4.9
instance initializers, 8.6
static initializers, 8.7

V

value set conversion, 5.1.13
assignment conversion, 5.2
binary numeric promotion, 5.6.2
casting conversion, 5.5
compound assignment operators, 15.26.2, 15.26.2
create frame, synchronize, transfer control, 15.12.4.5
evaluation, denotation, and result, 15.1
floating-point types, formats, and values, 4.2.3
fp-strict expressions, 15.4
method invocation conversion, 5.3
simple assignment operator =, 15.26.1, 15.26.1
unary minus operator -, 15.15.4
unary numeric promotion, 5.6.1
variables as values, 15.2
variables, 4.12
evaluation, denotation, and result, 15.1
variables as values, 15.2
variables of primitive type, 4.12.1
variables of reference type, 4.12.2
@SafeVarargs, 9.6.3.7
type of an expression, 15.3
variables, 4.12
verification of the binary representation, 12.3.1
link test: verify, prepare, (optionally) resolve, 12.1.2
volatile fields, 8.3.1.4
happens-before order, 17.4.5
synchronization order, 17.4.4

W

wait, 17.2.1
happens-before order, 17.4.5
wait sets and notification, 17.2
class Object, 4.3.2
well-formed executions, 17.4.7
executions, 17.4.6
what binary compatibility is and is not, 13.2
when initialization occurs, 12.4.1
final variables, 4.12.4
initialize test: execute initializers, 12.1.3
when reference types are the same, 4.3.4
checked casts at run time, 5.5.3
where types are used, 4.11
while statement, 14.12
boolean type and boolean values, 4.2.5
while statements, 16.2.10
while statements, 16.2.10
white space, 3.6
input elements and tokens, 3.5, 3.5
lexical grammar, 2.2
lexical translations, 3.2
widening and narrowing primitive conversion, 5.1.4
casting conversion, 5.5
widening primitive conversion, 5.1.2
assignment conversion, 5.2
binary numeric promotion, 5.6.2
casting conversion, 5.5, 5.5
method invocation conversion, 5.3
numeric promotions, 5.6
unary numeric promotion, 5.6.1, 5.6.1
widening and narrowing primitive conversion, 5.1.4
widening reference conversion, 5.1.5
assignment conversion, 5.2
casting conversion, 5.5, 5.5
floating-point operations, 4.2.4
integer operations, 4.2.2
method invocation conversion, 5.3
word tearing, 17.6
write-protected fields, 17.5.4