Index

Symbols

= operator, 15.26.1
assignment contexts, 5.2
expressions and run-time checks, 15.5, 15.5
normal and abrupt completion of evaluation, 15.6, 15.6
@Deprecated, 9.6.4.6
@FunctionalInterface, 9.6.4.9
@Inherited, 9.6.4.3
@Override, 9.6.4.4
@Repeatable, 9.6.4.8
repeatable annotation types, 9.6.3
@Retention, 9.6.4.2
repeatable annotation types, 9.6.3
@SafeVarargs, 9.6.4.7
formal parameters, 8.4.1
@SuppressWarnings, 9.6.4.5
checked casts and unchecked casts, 5.5.2
formal parameters, 8.4.1
requirements in overriding and hiding, 8.4.8.3
unchecked conversion, 5.1.9
@Target, 9.6.4.1
multiple annotations of the same type, 9.7.5
repeatable annotation types, 9.6.3
where annotations may appear, 9.7.4

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.1
final classes, 8.1.1.2
superinterfaces, 8.1.5
abstract interfaces, 9.1.1.1
abstract methods, 8.4.3.1, 13.4.16
abstract classes, 8.1.1.1
method body, 8.4.7
method declarations, 9.4
access control, 6.6
accessing superclass members using super, 15.11.2
class literals, 15.8.2
class modifiers, 8.1.1
constructor declarations, 8.8
default constructor, 8.8.9
enum body declarations, 8.9.2
explicit constructor invocations, 8.8.7.1
field access using a primary, 15.11.1
identify potentially applicable methods, 15.12.2.1
import declarations, 7.5
interface modifiers, 9.1.1
local class declarations, 14.3
member type declarations, 8.5
method declarations, 9.4
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
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
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
accessing superclass members using super, 15.11.2
declarations, 6.1
field declarations, 8.3
field initialization, 8.3.2, 8.3.2
initialization of fields in interfaces, 9.3.1
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
@Target, 9.6.4.1
annotation types, 9.6
declarations, 6.1, 6.1, 6.1
marker annotations, 9.7.2
normal annotations, 9.7.1
single-element annotations, 9.7.3
syntactic classification of a name according to context, 6.5.1
where types are used, 4.11
annotation types, 9.6
@Target, 9.6.4.1
annotations, 9.7
declarations, 6.1
interface declarations, 9.1
annotations, 9.7
declarations, 6.1
defaults for annotation type elements, 9.6.2
syntactic classification of a name according to context, 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
where types are used, 4.11, 4.11
anonymous constructors, 15.9.5.1
choosing the constructor and its arguments, 15.9.3
default constructor, 8.8.9
form of a binary, 13.1
argument lists are evaluated left-to-right, 15.7.4
array access, 10.4
array access expressions, 15.10.3
array access, 10.4
assignment operators, 15.26
compound assignment operators, 15.26.2
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 and access expressions, 15.10
method reference expressions, 15.13
array creation expressions, 15.10.1
array creation, 10.3
array initializers, 10.6
objects, 4.3.1
syntactic classification of a name according to context, 6.5.1
unary numeric promotion, 5.6.1
where types are used, 4.11, 4.11
array initializers, 10.6
array creation, 10.3
definite assignment and array initializers, 16.4
normal and abrupt completion of evaluation, 15.6
objects, 4.3.1
run-time evaluation of array creation expressions, 15.10.2
array members, 10.7
declarations, 6.1, 6.1
happens-before order, 17.4.5
qualified expression names, 6.5.6.2
array store exception, 10.5
array variables, 10.2
assignment contexts, 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
annotation type elements, 9.6.1
enhanced for statement, 14.14.2
raw types, 4.8
reference types and values, 4.3
reifiable types, 4.7
where types are used, 4.11
array variables, 10.2
enhanced for statement, 14.14.2
formal parameters, 8.4.1
lambda parameters, 15.27.1
arrays, 10
array creation expressions, 15.10.1
kinds of variables, 4.12.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 contexts, 5.2
array initializers, 10.6
array store exception, 10.5
array variables, 10.2
class instance creation expressions, 15.9
execution of try-catch, 14.20.1
expressions and run-time checks, 15.5, 15.5
kinds of types and values, 4.1
lambda expressions, 15.27
method invocation expressions, 15.12
method reference expressions, 15.13
normal annotations, 9.7.1
reference conditional expressions, 15.25.3
return statement, 14.17
run-time evaluation of method references, 15.13.3
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 contexts, 5.2
assignment expressions, 16.1.8
evaluation order for other expressions, 15.7.5
field initialization, 8.3.2
final variables, 4.12.4
forms of expressions, 15.2
initial values of variables, 4.12.5
syntactic classification of a name according to context, 6.5.1
variables, 4.12
asynchronous Exceptions, 11.1.3
causes of Exceptions, 11.1.2

B

basic for statement, 14.14.1
@Target, 9.6.4.1
for statements, 16.2.12
scope of a declaration, 6.3
syntactic classification of a name according to context, 6.5.1
where types are used, 4.11
basic try-with-resources, 14.20.3.1
binary compatibility, 13
binary numeric promotion, 5.6.2
additive operators (+ and -) for numeric types, 15.18.2
division operator /, 15.17.2
integer bitwise operators &, ^, and |, 15.22.1
multiplicative operators, 15.17
numeric conditional expressions, 15.25.2
numeric contexts, 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
lambda body, 15.27.2
local class declarations, 14.3
scope of a declaration, 6.3
blocks and statements, 14
boolean conditional expressions, 15.25.1
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
boxing conversion, 5.1.7
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
bounds, 18.1.3
bounds involving capture conversion, 18.3.2
invocation applicability inference, 18.5.1
more specific method inference, 18.5.4
reduction, 18.2
bounds involving capture conversion, 18.3.2
incorporation, 18.3
boxing conversion, 5.1.7
assignment contexts, 5.2
casting contexts, 5.5
class literals, 15.8.2
conditional operator ? :, 15.25
creation of new class instances, 12.5
floating-point operations, 4.2.4
integer operations, 4.2.2
invocation contexts, 5.3
invocation type inference, 18.5.2
normal and abrupt completion of evaluation, 15.6
numeric conditional expressions, 15.25.2
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
type compatibility constraints, 18.2.2, 18.2.2
break statement, 14.15
break, continue, return, and throw statements, 16.2.13
labeled statements, 14.7
names and identifiers, 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.10.3
assignment operators, 15.26
bounds, 18.1.3
cast expressions, 15.16
compile-time declaration of a method reference, 15.13.1, 15.13.1
compile-time step 3: is the chosen method appropriate?, 15.12.3
enhanced for statement, 14.14.2
expression compatibility constraints, 18.2.1, 18.2.1
field access using a primary, 15.11.1
function types, 9.9
intersection types, 4.9
least upper bound, 4.10.4
members and constructors of parameterized types, 4.5.2
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
reference conditional expressions, 15.25.3
resolution, 18.4
simple expression names, 6.5.6.1
subtyping among class and interface types, 4.10.2
type arguments of parameterized types, 4.5.1
type of a method reference, 15.13.2
cast expressions, 15.16
array types, 10.1
casting contexts, 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
forms of expressions, 15.2
happens-before order, 17.4.5
integer operations, 4.2.2
intersection types, 4.9
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
where types are used, 4.11
casting contexts, 5.5
boolean type and boolean values, 4.2.5
cast expressions, 15.16, 15.16
expressions and run-time checks, 15.5, 15.5
happens-before order, 17.4.5
kinds of types and values, 4.1
lambda expressions, 15.27
method reference expressions, 15.13
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
boxing conversion, 5.1.7
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
run-time evaluation of method references, 15.13.3, 15.13.3, 15.13.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
checked exception constraints, 18.2.5
choosing the constructor and its arguments, 15.9.3
anonymous constructors, 15.9.5.1
class instance creation expressions, 15.9
compile-time declaration of a method reference, 15.13.1
default constructor, 8.8.9
expression compatibility constraints, 18.2.1
formal parameters, 8.8.1
choosing the most specific method, 15.12.2.5
compile-time declaration of a method reference, 15.13.1, 15.13.1, 15.13.1
compile-time step 2: determine method Signature, 15.12.2
conditional operator ? :, 15.25, 15.25
method and constructor overloading, 13.4.23
more specific method inference, 18.5.4, 18.5.4
phase 1: identify matching arity methods applicable by strict invocation, 15.12.2.2
phase 2: identify matching arity methods applicable by loose invocation, 15.12.2.3
phase 3: identify methods applicable by variable arity invocation, 15.12.2.4
class body and member declarations, 8.1.6, 13.4.6
class members, 8.2
member type declarations, 8.5, 8.5
scope of a declaration, 6.3
what binary compatibility is and is not, 13.2
class declarations, 8.1
declarations, 6.1
reference types and values, 4.3
types, classes, and interfaces, 4.12.6
class instance creation expressions, 15.9
conditional operator ? :, 15.25, 15.25
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
forms of expressions, 15.2
functional interfaces, 9.8
initial values of variables, 4.12.5, 4.12.5
instance initializers, 8.6
invocation contexts, 5.3
invocation type inference, 18.5.2
kinds of variables, 4.12.3
method reference expressions, 15.13
names and identifiers, 6.2
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
where types are used, 4.11, 4.11, 4.11, 4.11
class literals, 15.8.2
declarations, 6.1
normal annotations, 9.7.1
syntactic classification of a name according to context, 6.5.1
class loading, 12.2
causes of Exceptions, 11.1.2
class literals, 15.8.2
load the class test, 12.1.1
class members, 8.2
abstract classes, 8.1.1.1
declarations, 6.1
function types, 9.9
members and constructors of parameterized types, 4.5.2
method invocation type, 15.12.2.6
class modifiers, 8.1.1
@Target, 9.6.4.1
anonymous class declarations, 15.9.5
local class declarations, 14.3
reference type casting, 5.5.1, 5.5.1, 5.5.1
class Object, 4.3.2
checked casts at run time, 5.5.3, 5.5.3
method invocation type, 15.12.2.6
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
local class declarations, 14.3
package members, 7.1
qualified expression names, 6.5.6.2
reclassification of contextually ambiguous names, 6.5.2
top level type declarations, 7.6
comments, 3.7
input elements and tokens, 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
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
checked exception constraints, 18.2.5
compile-time declaration of a method reference, 15.13.1
checked exception constraints, 18.2.5
choosing the most specific method, 15.12.2.5
compile-time step 2: determine method Signature, 15.12.2
expression compatibility constraints, 18.2.1, 18.2.1
identify potentially applicable methods, 15.12.2.1
invocation type inference, 18.5.2, 18.5.2
method reference expressions, 15.13
phase 1: identify matching arity methods applicable by strict invocation, 15.12.2.2
run-time evaluation of method references, 15.13.3
compile-time step 1: determine class or interface to search, 15.12.1
class Object, 4.3.2
compile-time declaration of a method reference, 15.13.1
identify potentially applicable methods, 15.12.2.1
method invocation type, 15.12.2.6
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 declaration of a method reference, 15.13.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
run-time evaluation of method references, 15.13.3, 15.13.3, 15.13.3
complementary pairs of bounds, 18.3.1
incorporation, 18.3
compound assignment operators, 15.26.2
evaluate left-hand operand first, 15.7.1
compute target reference (if necessary), 15.12.4.1
method reference expressions, 15.13
concepts and notation, 18.1
conditional expression type (primitive 3rd operand, part i), 15.25
conditional expression type (primitive 3rd operand, part ii), 15.25
conditional expression type (reference 3rd operand, part i), 15.25
conditional expression type (reference 3rd operand, part ii), 15.25
conditional expression type (reference 3rd operand, part iii), 15.25
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
forms of expressions, 15.2, 15.2
identify potentially applicable methods, 15.12.2.1
integer operations, 4.2.2
objects, 4.3.1
phase 1: identify matching arity methods applicable by strict invocation, 15.12.2.2
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
forms of expressions, 15.2
constant expressions, 15.28
assignment contexts, 5.2
boolean constant expressions, 16.1.1
class String, 4.3.3
creation of new class instances, 12.5
final fields and static constant variables, 13.4.9
final variables, 4.12.4
forms of expressions, 15.2
fp-strict expressions, 15.4
initialization of fields in interfaces, 9.3.1
normal annotations, 9.7.1
numeric conditional expressions, 15.25.2
objects, 4.3.1
String concatenation operator +, 15.18.1
String literals, 3.10.5
subsequent modification of final fields, 17.5.3
unreachable statements, 14.21, 14.21, 14.21
constraint formulas, 18.1.2
reduction, 18.2
constructor body, 8.8.7
constructor declarations, 8.8
definite assignment, constructors, and instance initializers, 16.9
initial values of variables, 4.12.5
kinds of variables, 4.12.3
return statement, 14.17
constructor declarations, 8.8
class body and member declarations, 8.1.6
creation of new class instances, 12.5
declarations, 6.1, 6.1
final fields, 8.3.1.2
raw types, 4.8
return statement, 14.17
run-time evaluation of class instance creation expressions, 15.9.4
simple expression names, 6.5.6.1
syntactic classification of a name according to context, 6.5.1
where types are used, 4.11
constructor modifiers, 8.8.3
@Target, 9.6.4.1
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
declarations, 6.1
syntactic classification of a name according to context, 6.5.1
throw statement, 14.18
where types are used, 4.11, 4.11
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
normal and abrupt completion of statements, 14.1
conversions and contexts, 5
parenthesized expressions, 15.8.5
type of an expression, 15.3
create frame, synchronize, transfer control, 15.12.4.5
run-time evaluation of method references, 15.13.3, 15.13.3, 15.13.3
creation of new class instances, 12.5
constructor declarations, 8.8
field initialization, 8.3.2
form of a binary, 13.1
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
functional interfaces, 9.8
members and constructors of parameterized types, 4.5.2
names and identifiers, 6.2
syntactic classification of a name according to context, 6.5.1
where types are used, 4.11, 4.11
default constructor, 8.8.9
form of a binary, 13.1
method and constructor declarations, 13.4.12
defaults for annotation type elements, 9.6.2
marker annotations, 9.7.2
single-element annotations, 9.7.3
syntactic classification of a name according to context, 6.5.1
definite assignment, 16
assignment operators, 15.26
final variables, 4.12.4, 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
lambda body, 15.27.2
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
field initialization, 8.3.2, 8.3.2
final fields and static constant variables, 13.4.9
form of a binary, 13.1
initialization of fields in interfaces, 9.3.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
top level type declarations, 7.6
determining enclosing instances, 15.9.2
anonymous constructors, 15.9.5.1
choosing the constructor and its arguments, 15.9.3, 15.9.3
class instance creation expressions, 15.9
compile-time declaration of a method reference, 15.13.1
default constructor, 8.8.9
formal parameters, 8.8.1
inner classes and enclosing instances, 8.1.3
method reference expressions, 15.13
run-time evaluation of method references, 15.13.3
determining the class being instantiated, 15.9.1
abstract classes, 8.1.1.1
class instance creation expressions, 15.9
enum types, 8.9
determining the meaning of a name, 6.5
class members, 8.2
declarations, 6.1
interface members, 9.2
names and identifiers, 6.2
obscuring, 6.4.2
where types are used, 4.11
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
@Target, 9.6.4.1
for statements, 16.2.12
scope of a declaration, 6.3
syntactic classification of a name according to context, 6.5.1
where types are used, 4.11
enum body declarations, 8.9.2
constructor declarations, 8.8
declarations, 6.1, 6.1, 6.1
enum constants, 8.9.1
@Target, 9.6.4.1
definite assignment and enum constants, 16.5
definite assignment and static initializers, 16.8
enum types, 8.9
normal annotations, 9.7.1
where types are used, 4.11
enum members, 8.9.3
declarations, 6.1
form of a binary, 13.1
enum types, 8.9
@Target, 9.6.4.1
abstract methods, 8.4.3.1
class declarations, 8.1
declarations, 6.1
normal annotations, 9.7.1
superclasses and subclasses, 8.1.4
switch statement, 14.11
equality operators, 15.21
constant expressions, 15.28
erasure, 4.6
assignment contexts, 5.2
cast expressions, 15.16
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
declarations, 6.1
evaluate arguments, 15.12.4.2
field declarations, 13.4.8
form of a binary, 13.1, 13.1, 13.1
invocation contexts, 5.3
method and constructor formal parameters, 13.4.14
method and constructor type parameters, 13.4.13
method result type, 13.4.15
method Signature, 8.4.2
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 invocation expressions, 15.12
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
field initialization, 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
type of a lambda expression, 15.27.3
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
enum body declarations, 8.9.2
exception analysis of statements, 11.2.2
form of a binary, 13.1
inner classes and enclosing instances, 8.1.3, 8.1.3
instance initializers, 8.6
invocation contexts, 5.3
syntactic classification of a name according to context, 6.5.1, 6.5.1
where types are used, 4.11, 4.11
expression compatibility constraints, 18.2.1
expression names, 15.14.1
declarations, 6.1
expression statements, 14.8, 16.2.6
evaluation, denotation, and result, 15.1
expression statements, 16.2.6
identify potentially applicable methods, 15.12.2.1
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

feedback, 1.5
field (constant) declarations, 9.3
@Target, 9.6.4.1
array initializers, 10.6
array variables, 10.2, 10.2
declarations, 6.1
final variables, 4.12.4
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
where types are used, 4.11
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
raw types, 4.8
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
shadowing, 6.4.1
simple expression names, 6.5.6.1
syntactic classification of a name according to context, 6.5.1
where annotations may appear, 9.7.4
where types are used, 4.11
field initialization, 8.3.2
definite assignment and static initializers, 16.8
definite assignment, constructors, and instance initializers, 16.9
detailed initialization procedure, 12.4.2
exception checking, 11.2.3, 11.2.3
final fields and static constant variables, 13.4.9
initialization of fields in interfaces, 9.3.1
simple expression names, 6.5.6.1
static initializers, 8.7
field modifiers, 8.3.1
@Target, 9.6.4.1
field declarations, 8.3
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 static constant variables, 13.4.9
field declarations, 13.5.5
final variables, 4.12.4
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
detailed initialization procedure, 12.4.2
enum body declarations, 8.9.2
field initialization, 8.3.2
final fields, 8.3.1.2
final fields and static constant variables, 13.4.9
form of a binary, 13.1
initialization of fields in interfaces, 9.3.1
inner classes and enclosing instances, 8.1.3, 8.1.3, 8.1.3
lambda body, 15.27.2
local variable declarators and types, 14.4.1
narrowing reference conversion, 5.1.6
try statement, 14.20
try-with-resources, 14.20.3
when initialization occurs, 12.4.1
finalization of class instances, 12.6
class Object, 4.3.2
enum body declarations, 8.9.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
lambda parameters, 15.27.1
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
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, 8.8.1
@Target, 9.6.4.1
array variables, 10.2
choosing the constructor and its arguments, 15.9.3
compile-time declaration of a method reference, 15.13.1
compile-time step 3: is the chosen method appropriate?, 15.12.3
declarations, 6.1, 6.1
default constructor, 8.8.9
definite assignment and parameters, 16.3, 16.3
evaluate arguments, 15.12.4.2
form of a binary, 13.1
formal parameters, 8.8.1
initial values of variables, 4.12.5, 4.12.5
invoke test.main, 12.1.4
kinds of variables, 4.12.3, 4.12.3
lambda parameters, 15.27.1, 15.27.1
method and constructor formal parameters, 13.4.14
method declarations, 8.4
reclassification of contextually ambiguous names, 6.5.2, 6.5.2
scope of a declaration, 6.3, 6.3
shadowing and obscuring, 6.4
shared variables, 17.4.1
syntactic classification of a name according to context, 6.5.1, 6.5.1, 6.5.1
variables of reference type, 4.12.2
where types are used, 4.11, 4.11, 4.11, 4.11
forms of expressions, 15.2
boolean conditional expressions, 15.25.1
choosing the most specific method, 15.12.2.5
class instance creation expressions, 15.9
conditional operator ? :, 15.25, 15.25
expression compatibility constraints, 18.2.1, 18.2.1
identify potentially applicable methods, 15.12.2.1
lambda expressions, 15.27
method reference expressions, 15.13
more specific method inference, 18.5.4
numeric conditional expressions, 15.25.2
parenthesized expressions, 15.8.5
forward references during field initialization, 8.3.3
when initialization occurs, 12.4.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
method declarations, 9.4
multiplication operator *, 15.17.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
function types, 9.9
checked exception constraints, 18.2.5
expression compatibility constraints, 18.2.1
type of a lambda expression, 15.27.3
type of a method reference, 15.13.2
functional interface parameterization inference, 18.5.3
expression compatibility constraints, 18.2.1
type of a lambda expression, 15.27.3
functional interfaces, 9.8
@FunctionalInterface, 9.6.4.9
checked exception constraints, 18.2.5
expression compatibility constraints, 18.2.1
functional interface parameterization inference, 18.5.3
identify potentially applicable methods, 15.12.2.1
lambda expressions, 15.27
method reference expressions, 15.13
type of a lambda expression, 15.27.3
type of a method reference, 15.13.2

G

generic classes and type parameters, 8.1.2
@Target, 9.6.4.1
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
where types are used, 4.11
generic constructors, 8.8.4
@Target, 9.6.4.1
class instance creation expressions, 15.9
declarations, 6.1
form of a binary, 13.1
scope of a declaration, 6.3
syntactic classification of a name according to context, 6.5.1
type erasure, 4.6
type variables, 4.4
where types are used, 4.11
generic interfaces and type parameters, 9.1.2
@Target, 9.6.4.1
capture conversion, 5.1.10
declarations, 6.1
form of a binary, 13.1
parameterized types, 4.5
scope of a declaration, 6.3
subtyping among class and interface types, 4.10.2
superinterfaces, 8.1.5
syntactic classification of a name according to context, 6.5.1
type variables, 4.4
types, classes, and interfaces, 4.12.6
where types are used, 4.11
generic methods, 8.4.4
@Target, 9.6.4.1
compile-time declaration of a method reference, 15.13.1
compile-time step 2: determine method Signature, 15.12.2
declarations, 6.1
form of a binary, 13.1
function types, 9.9, 9.9
method declarations, 8.4, 9.4
method invocation expressions, 15.12
method result, 8.4.5
method Signature, 8.4.2
scope of a declaration, 6.3
syntactic classification of a name according to context, 6.5.1
type erasure, 4.6
type variables, 4.4
where types are used, 4.11
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
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 declaration of a method reference, 15.13.1, 15.13.1, 15.13.1
compile-time step 1: determine class or interface to search, 15.12.1
compile-time step 2: determine method Signature, 15.12.2
phase 1: identify matching arity methods applicable by strict invocation, 15.12.2.2
phase 2: identify matching arity methods applicable by loose invocation, 15.12.2.3
phase 3: identify methods applicable by variable arity invocation, 15.12.2.4
identity conversion, 5.1.1
assignment contexts, 5.2
boxing conversion, 5.1.7
capture conversion, 5.1.10
casting contexts, 5.5
invocation contexts, 5.3, 5.3
numeric contexts, 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
incorporation, 18.3
incrementation part of for statement, 16.2.12.2
inference variables, 18.1.1
inheritance and overriding, 9.4.1
compile-time checking of Exceptions, 11.2
compile-time declaration of a method reference, 15.13.1
compile-time step 3: is the chosen method appropriate?, 15.12.3
interface members, 9.2
method declarations, 9.4
inheritance, overriding, and hiding, 8.4.8
class Object, 4.3.2
compile-time declaration of a method reference, 15.13.1
enum constants, 8.9.1
function types, 9.9
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
field initialization, 8.3.2
final fields and static constant variables, 13.4.9
initialization of fields in interfaces, 9.3.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.2
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 in interfaces, 9.3.1
detailed initialization procedure, 12.4.2
field initialization, 8.3.2
final fields and static constant variables, 13.4.9
initialization of for statement, 14.14.1.1
initialization part of for statement, 16.2.12.1
initialize test: execute initializers, 12.1.3
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
determining enclosing instances, 15.9.2
explicit constructor invocations, 8.8.7.1
form of a binary, 13.1
local class declarations, 14.3
method reference expressions, 15.13
qualified this, 15.8.4
when initialization occurs, 12.4.1
input elements and tokens, 3.5
invocation type inference, 18.5.2
lexical grammar, 2.2, 2.2
lexical translations, 3.2
unicode, 3.1
instance creation, 12.5, 15.9
conditional operator ? :, 15.25, 15.25
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
field initialization, 8.3.2
form of a binary, 13.1, 13.1
forms of expressions, 15.2
functional interfaces, 9.8
initial values of variables, 4.12.5, 4.12.5
instance initializers, 8.6, 8.6
invocation contexts, 5.3
invocation type inference, 18.5.2
kinds of variables, 4.12.3
method reference expressions, 15.13
names and identifiers, 6.2
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
where types are used, 4.11, 4.11, 4.11, 4.11
instance initializers, 8.6
class body and member declarations, 8.1.6
definite assignment, constructors, and instance initializers, 16.9
exception checking, 11.2.3
return statement, 14.17
simple expression names, 6.5.6.1
throw statement, 14.18
instanceof operator, 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
where types are used, 4.11, 4.11
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
boxing conversion, 5.1.7
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
interface members, 9.2
member type declarations, 8.5, 8.5
scope of a declaration, 6.3
interface declarations, 9.1
declarations, 6.1
reference types and values, 4.3
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 method body, 9.4.3
superinterfaces, 8.1.5
interface method declarations, 13.5.6
interface methods, 9.4
@Target, 9.6.4.1, 9.6.4.1
declarations, 6.1, 6.1, 6.1
inheritance, overriding, and hiding, 8.4.8
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
where types are used, 4.11, 4.11, 4.11, 4.11
interface modifiers, 9.1.1
@Target, 9.6.4.1
static member type declarations, 8.5.1
interface type parameters, 13.5.4
interfaces, 9
package members, 7.1
qualified expression names, 6.5.6.2
reclassification of contextually ambiguous names, 6.5.2
top level type declarations, 7.6
interruptions, 17.2.3
intersection types, 4.9
form of a binary, 13.1, 13.1
functional interfaces, 9.8
type variables, 4.4
where types are used, 4.11
introduction, 1
invocation applicability inference, 18.5.1
invocation type inference, 18.5.2, 18.5.2, 18.5.2, 18.5.2
phase 1: identify matching arity methods applicable by strict invocation, 15.12.2.2
phase 2: identify matching arity methods applicable by loose invocation, 15.12.2.3
phase 3: identify methods applicable by variable arity invocation, 15.12.2.4
invocation contexts, 5.3
class instance creation expressions, 15.9
constraint formulas, 18.1.2, 18.1.2
create frame, synchronize, transfer control, 15.12.4.5
expression compatibility constraints, 18.2.1
formal parameters, 8.4.1
kinds of types and values, 4.1
lambda expressions, 15.27
method invocation expressions, 15.12
method reference expressions, 15.13
reference conditional expressions, 15.25.3
type compatibility constraints, 18.2.2
invocation type inference, 18.5.2
expression compatibility constraints, 18.2.1, 18.2.1
invocation type inference, 18.5.2
method invocation type, 15.12.2.6
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
formal parameters, 8.4.1

L

labeled statements, 14.7, 16.2.5
break statement, 14.15
continue statement, 14.16
labeled statements, 16.2.5
names and identifiers, 6.2
lambda body, 15.27.2
choosing the most specific method, 15.12.2.5
identify potentially applicable methods, 15.12.2.1, 15.12.2.1
kinds of variables, 4.12.3
type of a lambda expression, 15.27.3
lambda expressions, 15.27
exception analysis of expressions, 11.2.1
forms of expressions, 15.2, 15.2
functional interfaces, 9.8
identify potentially applicable methods, 15.12.2.1
return statement, 14.17
scope of a declaration, 6.3
lambda parameters, 15.27.1
choosing the most specific method, 15.12.2.5, 15.12.2.5
compile-time step 2: determine method Signature, 15.12.2
declarations, 6.1
kinds of variables, 4.12.3
phase 1: identify matching arity methods applicable by strict invocation, 15.12.2.2
shadowing and obscuring, 6.4
where types are used, 4.11
least upper bound, 4.10.4
intersection types, 4.9
resolution, 18.4
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
loading process, 12.2.1
superclasses and subclasses, 8.1.4
superinterfaces and subinterfaces, 9.1.3
local class declaration statements, 16.2.3
local class declarations, 14.3
class instance creation expressions, 15.9
class modifiers, 8.1.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
@Target, 9.6.4.1
array initializers, 10.6
declarations, 6.1
initial values of variables, 4.12.5
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
where types are used, 4.11
local variable declarators and types, 14.4.1
array variables, 10.2
locate method to invoke, 15.12.4.4
run-time evaluation of method references, 15.13.3, 15.13.3, 15.13.3
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
annotations, 9.7
meaning of expression names, 6.5.6
expression names, 15.14.1
forms of expressions, 15.2
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
type-import-on-demand declarations, 7.5.2
meaning of type names, 6.5.5
names and identifiers, 6.2
member type declarations, 8.5, 9.5
@Target, 9.6.4.1, 9.6.4.1
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
form of a binary, 13.1, 13.1, 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
syntactic classification of a name according to context, 6.5.1, 6.5.1
type-import-on-demand declarations, 7.5.2, 7.5.2
where types are used, 4.11, 4.11, 4.11, 4.11
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
method and constructor formal parameters, 13.4.14
interface method declarations, 13.5.6
method and constructor overloading, 13.4.23
interface method declarations, 13.5.6
method and constructor throws, 13.4.21
interface method declarations, 13.5.6
method and constructor type parameters, 13.4.13
class type parameters, 13.4.5
method body, 8.4.7
abstract methods, 8.4.3.1
constructor body, 8.8.7
method declarations, 8.4
native methods, 8.4.3.4
method declarations, 8.4, 9.4
@Target, 9.6.4.1, 9.6.4.1
class body and member declarations, 8.1.6
declarations, 6.1, 6.1, 6.1, 6.1
evaluation, denotation, and result, 15.1
inheritance, overriding, and hiding, 8.4.8
interface body and member declarations, 9.1.4
raw types, 4.8, 4.8
return statement, 14.17
simple expression names, 6.5.6.1
syntactic classification of a name according to context, 6.5.1, 6.5.1, 6.5.1, 6.5.1
where types are used, 4.11, 4.11, 4.11, 4.11
method invocation expressions, 15.12
anonymous constructors, 15.9.5.1, 15.9.5.1
compile-time declaration of a method reference, 15.13.1
conditional operator ? :, 15.25, 15.25
constructor declarations, 8.8
declarations, 6.1
evaluation, denotation, and result, 15.1
exception analysis of expressions, 11.2.1
expressions and run-time checks, 15.5
field initialization, 8.3.2, 8.3.2
formal parameters, 8.4.1
forms of expressions, 15.2
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
instance initializers, 8.6
invocation contexts, 5.3
invocation type inference, 18.5.2
kinds of variables, 4.12.3, 4.12.3
lambda parameters, 15.27.1
method declarations, 8.4
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
simple method names, 6.5.7.1
static initializers, 8.7
syntactic classification of a name according to context, 6.5.1, 6.5.1, 6.5.1
this, 15.8.3
where types are used, 4.11, 4.11
method invocation type, 15.12.2.6
choosing the constructor and its arguments, 15.9.3, 15.9.3
compile-time declaration of a method reference, 15.13.1
compile-time step 3: is the chosen method appropriate?, 15.12.3
exception analysis of expressions, 11.2.1, 11.2.1
exception analysis of statements, 11.2.2
expression compatibility constraints, 18.2.1
invocation type inference, 18.5.2
type compatibility constraints, 18.2.2
type of a method reference, 15.13.2
method modifiers, 8.4.3
@Target, 9.6.4.1
method declarations, 8.4
objects, 4.3.1
method overriding, 13.4.24
method reference expressions, 15.13
access to a protected member, 6.6.2.1
declarations, 6.1
expressions and run-time checks, 15.5, 15.5
form of a binary, 13.1
forms of expressions, 15.2, 15.2
functional interfaces, 9.8
identify potentially applicable methods, 15.12.2.1
names and identifiers, 6.2
syntactic classification of a name according to context, 6.5.1, 6.5.1, 6.5.1
where types are used, 4.11, 4.11, 4.11
method result, 8.4.5
abstract classes, 8.1.1.1
abstract methods, 8.4.3.1
class literals, 15.8.2
constructor declarations, 8.8
function types, 9.9
functional interfaces, 9.8
interface method body, 9.4.3
method body, 8.4.7
method declarations, 8.4
requirements in overriding and hiding, 8.4.8.3
return statement, 14.17
type erasure, 4.6
where types are used, 4.11
method result type, 13.4.15
interface method declarations, 13.5.6
method Signature, 8.4.2
abstract classes, 8.1.1.1
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
functional interfaces, 9.8
hiding (by class methods), 8.4.8.2
inheritance and overriding, 9.4.1
inheritance, overriding, and hiding, 8.4.8, 8.4.8
inheriting methods with override-equivalent signatures, 8.4.8.4, 9.4.1.3
interface members, 9.2
method declarations, 8.4, 9.4
method result, 8.4.5
overloading, 9.4.2
overriding (by instance methods), 8.4.8.1, 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
abstract methods, 8.4.3.1
compile-time checking of Exceptions, 11.2
constructor throws, 8.8.5
declarations, 6.1
method declarations, 8.4
syntactic classification of a name according to context, 6.5.1
throw statement, 14.18
where types are used, 4.11, 4.11
more specific method inference, 18.5.4
choosing the most specific method, 15.12.2.5
multiple annotations of the same type, 9.7.5
annotation types, 9.6
annotations, 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
generic classes and type parameters, 8.1.2
generic interfaces and type parameters, 9.1.2
interface modifiers, 9.1.1
lambda parameters, 15.27.1
local variable declaration statements, 14.4
method declarations, 9.4
method modifiers, 8.4.3
named packages, 7.4.1
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
forms of expressions, 15.2
integer operations, 4.2.2

N

name classification, 6.5.1
access control, 6.6
declarations, 6.1
reference types and values, 4.3
name reclassification, 6.5.2
method invocation expressions, 15.12
named packages, 7.4.1
@Target, 9.6.4.1
names, 6
names and identifiers, 6.2
compile-time declaration of a method reference, 15.13.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 contexts, 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 contexts, 5.5
native methods, 8.4.3.4, 13.4.18
method body, 8.4.7
new keyword, 15.9
conditional operator ? :, 15.25, 15.25
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
forms of expressions, 15.2
functional interfaces, 9.8
initial values of variables, 4.12.5, 4.12.5
instance initializers, 8.6
invocation contexts, 5.3
invocation type inference, 18.5.2
kinds of variables, 4.12.3
method reference expressions, 15.13
names and identifiers, 6.2
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
where types are used, 4.11, 4.11, 4.11, 4.11
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
interface method body, 9.4.3
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
annotations, 9.7
defaults for annotation type elements, 9.6.2
names and identifiers, 6.2
syntactic classification of a name according to context, 6.5.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 conditional expressions, 15.25.2
numeric contexts, 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, 12.5
constructor declarations, 8.8
field initialization, 8.3.2
form of a binary, 13.1
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, 4.3.2
checked casts at run time, 5.5.3, 5.5.3
method invocation type, 15.12.2.6
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, 15.12.2, 15.12.2.1, 15.12.2.2, 15.12.2.3, 15.12.2.4, 15.12.2.5
choosing the constructor and its arguments, 15.9.3, 15.9.3, 15.9.3
choosing the most specific method, 15.12.2.5
compile-time declaration of a method reference, 15.13.1, 15.13.1, 15.13.1, 15.13.1, 15.13.1, 15.13.1, 15.13.1, 15.13.1, 15.13.1, 15.13.1, 15.13.1, 15.13.1, 15.13.1, 15.13.1, 15.13.1, 15.13.1
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
conditional operator ? :, 15.25, 15.25
enum constants, 8.9.1
invocation applicability inference, 18.5.1, 18.5.1
invocation type inference, 18.5.2
method and constructor overloading, 13.4.23
more specific method inference, 18.5.4, 18.5.4, 18.5.4, 18.5.4, 18.5.4
overloading, 8.4.9
phase 1: identify matching arity methods applicable by strict invocation, 15.12.2.2, 15.12.2.2, 15.12.2.2
phase 2: identify matching arity methods applicable by loose invocation, 15.12.2.3, 15.12.2.3, 15.12.2.3, 15.12.2.3
phase 3: identify methods applicable by variable arity invocation, 15.12.2.4, 15.12.2.4, 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
final classes, 8.1.1.2
locate method to invoke, 15.12.4.4
superinterfaces, 8.1.5

P

package declarations, 7.4
compilation units, 7.3
declarations, 6.1
package members, 7.1
packages, 7
parameterized types, 4.5
annotation type elements, 9.6.1
capture conversion, 5.1.10, 5.1.10
checked casts and unchecked casts, 5.5.2
class literals, 15.8.2
declarations, 6.1
determining the class being instantiated, 15.9.1
field declarations, 13.4.8
functional interfaces, 9.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 reference expressions, 15.13
method result type, 13.4.15
normal annotations, 9.7.1
raw types, 4.8
reference type casting, 5.5.1
reference types and values, 4.3
superclasses and subclasses, 8.1.4
superinterfaces, 8.1.5
superinterfaces and subinterfaces, 9.1.3
type erasure, 4.6
types, classes, and interfaces, 4.12.6
where types are used, 4.11
parenthesized expressions, 15.8.5
conditional operator ? :, 15.25, 15.25
constant expressions, 15.28
forms of expressions, 15.2
identify potentially applicable methods, 15.12.2.1
phase 1: identify matching arity methods applicable by strict invocation, 15.12.2.2
phase 1: identify matching arity methods applicable by strict invocation, 15.12.2.2
compile-time declaration of a method reference, 15.13.1, 15.13.1, 15.13.1, 15.13.1, 15.13.1
compile-time step 2: determine method Signature, 15.12.2, 15.12.2
invocation applicability inference, 18.5.1
more specific method inference, 18.5.4
phase 2: identify matching arity methods applicable by loose invocation, 15.12.2.3
phase 3: identify methods applicable by variable arity invocation, 15.12.2.4, 15.12.2.4
phase 2: identify matching arity methods applicable by loose invocation, 15.12.2.3
compile-time declaration of a method reference, 15.13.1, 15.13.1
compile-time step 2: determine method Signature, 15.12.2, 15.12.2
more specific method inference, 18.5.4
phase 1: identify matching arity methods applicable by strict invocation, 15.12.2.2
phase 3: identify methods applicable by variable arity invocation, 15.12.2.4
choosing the constructor and its arguments, 15.9.3
choosing the most specific method, 15.12.2.5
compile-time declaration of a method reference, 15.13.1, 15.13.1
compile-time step 2: determine method Signature, 15.12.2, 15.12.2
invocation applicability inference, 18.5.1
invocation type inference, 18.5.2
more specific method inference, 18.5.4
phase 2: identify matching arity methods applicable by loose invocation, 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
final variables, 4.12.4
forms of expressions, 15.2
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, 15.12.2.1
compile-time declaration of a method reference, 15.13.1, 15.13.1, 15.13.1
compile-time step 1: determine class or interface to search, 15.12.1
compile-time step 2: determine method Signature, 15.12.2
phase 1: identify matching arity methods applicable by strict invocation, 15.12.2.2
phase 2: identify matching arity methods applicable by loose invocation, 15.12.2.3
phase 3: identify methods applicable by variable arity invocation, 15.12.2.4
predefined annotation types, 9.6.4
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
constructor declarations, 8.8
primary expressions, 15.8
access to a protected member, 6.6.2.1
forms of expressions, 15.2
postfix expressions, 15.14
primitive types and values, 4.2
class literals, 15.8.2
conditional operator ? :, 15.25
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
where types are used, 4.11
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
members and constructors of parameterized types, 4.5.2
qualified package names, 6.5.3.2
qualified packageortypenames, 6.5.4.2
qualified this, 15.8.4
declarations, 6.1
syntactic classification of a name according to context, 6.5.1
qualified type names, 6.5.5.2
access control, 6.6
members and constructors of parameterized types, 4.5.2
single-static-import declarations, 7.5.3
single-type-import declarations, 7.5.1
static-import-on-demand declarations, 7.5.4
type-import-on-demand declarations, 7.5.2

R

raw types, 4.8
assignment contexts, 5.2
functional interfaces, 9.8
invocation contexts, 5.3
method reference expressions, 15.13
reifiable types, 4.7
subtyping among class and interface types, 4.10.2
type arguments of parameterized types, 4.5.1
unchecked conversion, 5.1.9
variables of reference type, 4.12.2
where types are used, 4.11
reading final fields during construction, 17.5.2
reclassification of contextually ambiguous names, 6.5.2
method invocation expressions, 15.12
reduction, 18.2
invocation applicability inference, 18.5.1
reference conditional expressions, 15.25.3
reference equality operators == and !=, 15.21.3
objects, 4.3.1
reference type casting, 5.5.1
casting contexts, 5.5
reference types and values, 4.3
class literals, 15.8.2
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.6
reifiable types, 4.7
@SafeVarargs, 9.6.4.7
array creation expressions, 15.10.1
array initializers, 10.6
expressions and run-time checks, 15.5, 15.5
formal parameters, 8.4.1
method reference expressions, 15.13
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
repeatable annotation types, 9.6.3
@Repeatable, 9.6.4.8
evolution of annotation types, 13.5.7
multiple annotations of the same type, 9.7.5
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
type of a lambda expression, 15.27.3
type of a method reference, 15.13.2
variables of reference type, 4.12.2
resolution, 18.4
invocation applicability inference, 18.5.1
invocation type inference, 18.5.2
resolution of symbolic references, 12.3.3
link test: verify, prepare, (optionally) resolve, 12.1.2
return statement, 14.17
break, continue, return, and throw statements, 16.2.13
constructor body, 8.8.7, 8.8.7
instance initializers, 8.6
interface method body, 9.4.3
method body, 8.4.7
normal and abrupt completion of statements, 14.1
static initializers, 8.7
run-time evaluation of array access expressions, 15.10.4
array access, 10.4
evaluation order for other expressions, 15.7.5
normal and abrupt completion of evaluation, 15.6, 15.6
run-time evaluation of array creation expressions, 15.10.2
evaluation order for other expressions, 15.7.5
initial values of variables, 4.12.5
kinds of variables, 4.12.3
normal and abrupt completion of evaluation, 15.6, 15.6
run-time evaluation of class instance creation expressions, 15.9.4
evaluation order for other expressions, 15.7.5
normal and abrupt completion of evaluation, 15.6
throw statement, 14.18
run-time evaluation of lambda expressions, 15.27.4
creation of new class instances, 12.5
evaluation order for other expressions, 15.7.5
normal and abrupt completion of evaluation, 15.6
run-time evaluation of method invocation, 15.12.4
evaluation order for other expressions, 15.7.5
overloading, 8.4.9
run-time evaluation of method references, 15.13.3
creation of new class instances, 12.5
evaluation order for other expressions, 15.7.5
normal and abrupt completion of evaluation, 15.6
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
forward references during field initialization, 8.3.3
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
lambda parameters, 15.27.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
obscuring, 6.4.2
scope of a declaration, 6.3
simple expression names, 6.5.6.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
lambda parameters, 15.27.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 contexts, 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
method declarations, 8.4
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
annotations, 9.7
single-static-import declarations, 7.5.3
declarations, 6.1, 6.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, 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
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
static methods, 8.4.3.2, 13.4.19
generic classes and type parameters, 8.1.2
interface method declarations, 13.5.6
simple expression names, 6.5.6.1
static-import-on-demand declarations, 7.5.4
declarations, 6.1, 6.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 contexts, 5.4
types, classes, and interfaces, 4.12.6
String contexts, 5.4
boolean type and boolean values, 4.2.5
String conversion, 5.1.11
String concatenation operator +, 15.18.1
String contexts, 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, 4.3.3
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
assignment contexts, 5.2
checked casts and unchecked casts, 5.5.2
choosing the most specific method, 15.12.2.5
constraint formulas, 18.1.2
invocation contexts, 5.3
method throws, 8.4.6
narrowing reference conversion, 5.1.6
parameterized types, 4.5
subtyping constraints, 18.2.3
type arguments of parameterized types, 4.5.1, 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
subtyping constraints, 18.2.3
superclasses and subclasses, 8.1.4
class members, 8.2
class Object, 4.3.2
enum types, 8.9
final classes, 8.1.1.2
kinds of variables, 4.12.3
loading process, 12.2.1
subtyping among class and interface types, 4.10.2
syntactic classification of a name according to context, 6.5.1
where types are used, 4.11, 4.11
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
checked casts at run time, 5.5.3
class members, 8.2
subtyping among class and interface types, 4.10.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
where types are used, 4.11, 4.11
superinterfaces and subinterfaces, 9.1.3
interface members, 9.2
loading process, 12.2.1
subtyping among class and interface types, 4.10.2
superclasses and subclasses, 8.1.4
superinterfaces, 8.1.5
syntactic classification of a name according to context, 6.5.1
where types are used, 4.11, 4.11
switch statement, 14.11
scope of a declaration, 6.3, 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
declarations, 6.1
reference types and values, 4.3
syntactic grammar, 2.3
compilation units, 7.3
input elements and tokens, 3.5
lexical translations, 3.2
syntax, 19

T

this, 15.8.3
field initialization, 8.3.2, 8.3.2
initialization of fields in interfaces, 9.3.1
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
@Target, 9.6.4.1
array variables, 10.2
compile-time checking of Exceptions, 11.2
declarations, 6.1, 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
initial values of variables, 4.12.5
kinds of variables, 4.12.3
labeled statements, 14.7
method throws, 8.4.6
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
where types are used, 4.11, 4.11
try statements, 16.2.15
try-catch statement, 14.20.1
try statement, 14.20
try-catch-finally statement, 14.20.2
try statement, 14.20
try-finally statement, 14.20.2
try statement, 14.20
try-with-resources, 14.20.3
@Target, 9.6.4.1
final variables, 4.12.4
local variable declaration statements, 14.4
scope of a declaration, 6.3
syntactic classification of a name according to context, 6.5.1
try statement, 14.20
where types are used, 4.11
try-with-resources (basic), 14.20.3.1
try-with-resources (extended), 14.20.3.2
type arguments of parameterized types, 4.5.1
capture conversion, 5.1.10
checked casts and unchecked casts, 5.5.2
class instance creation expressions, 15.9, 15.9
constraint formulas, 18.1.2
explicit constructor invocations, 8.8.7.1
method invocation expressions, 15.12
method reference expressions, 15.13
reference types and values, 4.3
reifiable types, 4.7
subtyping among class and interface types, 4.10.2
subtyping constraints, 18.2.3
type equality constraints, 18.2.4
types, classes, and interfaces, 4.12.6
unchecked conversion, 5.1.9
where types are used, 4.11
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
where types are used, 4.11, 4.11
type compatibility constraints, 18.2.2
type equality constraints, 18.2.4
type erasure, 4.6
assignment contexts, 5.2
cast expressions, 15.16
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
declarations, 6.1
evaluate arguments, 15.12.4.2
field declarations, 13.4.8
form of a binary, 13.1, 13.1, 13.1
invocation contexts, 5.3
method and constructor formal parameters, 13.4.14
method and constructor type parameters, 13.4.13
method result type, 13.4.15
method Signature, 8.4.2
raw types, 4.8
requirements in overriding and hiding, 8.4.8.3
type variables, 4.4
type inference, 18
compile-time step 2: determine method Signature, 15.12.2
generic constructors, 8.8.4
generic methods, 8.4.4
type of a constructor, 8.8.6
members and constructors of parameterized types, 4.5.2
type of a lambda expression, 15.27.3
checked exception constraints, 18.2.5
expression compatibility constraints, 18.2.1
invocation type inference, 18.5.2, 18.5.2
lambda parameters, 15.27.1
type of a method reference, 15.13.2
checked exception constraints, 18.2.5
type of an expression, 15.3
type variables, 4.4
class literals, 15.8.2
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
intersection types, 4.9
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
where types are used, 4.11
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, 4.1
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.10.3
array creation expressions, 15.10.1
bitwise complement operator ~, 15.15.5
numeric contexts, 5.6
shift operators, 15.19
unary minus operator -, 15.15.4
unary plus operator +, 15.15.3
unary operators, 15.15
final variables, 4.12.4
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.1
assert statement, 14.10
assignment contexts, 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 contexts, 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
invocation contexts, 5.3
iteration of for statement, 14.14.1.2
logical complement operator !, 15.15.6
multiplicative operators, 15.17
numeric contexts, 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.4.7
assignment contexts, 5.2
casting contexts, 5.5, 5.5
invocation contexts, 5.3
method result, 8.4.5
type compatibility constraints, 18.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 static constant variables, 13.4.9
instance initializers, 8.6
lambda body, 15.27.2
static initializers, 8.7
uses of inference, 18.5

V

value set conversion, 5.1.13
assignment contexts, 5.2
binary numeric promotion, 5.6.2
casting contexts, 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
invocation contexts, 5.3
simple assignment operator =, 15.26.1, 15.26.1
unary minus operator -, 15.15.4
unary numeric promotion, 5.6.1
variables, 4.12
evaluation, denotation, and result, 15.1
variables of primitive type, 4.12.1
variables of reference type, 4.12.2
@SafeVarargs, 9.6.4.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
constraint formulas, 18.1.2
type equality constraints, 18.2.4
where annotations may appear, 9.7.4
annotation types, 9.6
annotations, 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
generic classes and type parameters, 8.1.2
generic interfaces and type parameters, 9.1.2
interface modifiers, 9.1.1
lambda parameters, 15.27.1
local variable declaration statements, 14.4
method declarations, 9.4
method modifiers, 8.4.3
named packages, 7.4.1
where types are used, 4.11
@Target, 9.6.4.1
lexical translations, 3.2
syntactic classification of a name according to context, 6.5.1
where annotations may appear, 9.7.4
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
lexical grammar, 2.2
lexical translations, 3.2
widening and narrowing primitive conversion, 5.1.4
casting contexts, 5.5
widening primitive conversion, 5.1.2
assignment contexts, 5.2
binary numeric promotion, 5.6.2
casting contexts, 5.5, 5.5
invocation contexts, 5.3, 5.3
numeric contexts, 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 contexts, 5.2
casting contexts, 5.5, 5.5
floating-point operations, 4.2.4
integer operations, 4.2.2
invocation contexts, 5.3, 5.3
word tearing, 17.6
write-protected fields, 17.5.4