Preface to the Java SE 8 Edition
1.1 Organization of the Specification
1.4 Relationship to Predefined Classes and Interfaces
3.10.2 Floating-Point Literals
3.10.6 Escape Sequences for Character and String Literals
4 Types, Values, and Variables
4.1 The Kinds of Types and Values
4.2 Primitive Types and Values
4.2.1 Integral Types and Values
4.2.3 Floating-Point Types, Formats, and Values
4.2.4 Floating-Point Operations
4.2.5 The boolean
Type and boolean Values
4.3 Reference Types and Values
4.3.4 When Reference Types Are the Same
4.5.1 Type Arguments of Parameterized Types
4.5.2 Members and Constructors of Parameterized Types
4.10.1 Subtyping among Primitive Types
4.10.2 Subtyping among Class and Interface Types
4.10.3 Subtyping among Array Types
4.12.1 Variables of Primitive Type
4.12.2 Variables of Reference Type
4.12.5 Initial Values of Variables
4.12.6 Types, Classes, and Interfaces
5.1.2 Widening Primitive Conversion
5.1.3 Narrowing Primitive Conversion
5.1.4 Widening and Narrowing Primitive Conversion
5.1.5 Widening Reference Conversion
5.1.6 Narrowing Reference Conversion
5.5.2 Checked Casts and Unchecked Casts
5.5.3 Checked Casts at Run Time
5.6.2 Binary Numeric Promotion
6.5 Determining the Meaning of a Name
6.5.1 Syntactic Classification of a Name According to Context
6.5.2 Reclassification of Contextually Ambiguous Names
6.5.3 Meaning of Package Names
6.5.3.2 Qualified Package Names
6.5.4 Meaning of PackageOrTypeNames
6.5.4.1 Simple PackageOrTypeNames
6.5.4.2 Qualified PackageOrTypeNames
6.5.6 Meaning of Expression Names
6.5.6.1 Simple Expression Names
6.5.6.2 Qualified Expression Names
6.6.1 Determining Accessibility
6.6.2 Details on protected
Access
6.6.2.1 Access to a protected
Member
6.6.2.2 Qualified Access to a protected
Constructor
6.7 Fully Qualified Names and Canonical Names
7.4.3 Observability of a Package
7.5.1 Single-Type-Import Declarations
7.5.2 Type-Import-on-Demand Declarations
7.5.3 Single-Static-Import Declarations
7.5.4 Static-Import-on-Demand Declarations
7.6 Top Level Type Declarations
8.1.2 Generic Classes and Type Parameters
8.1.3 Inner Classes and Enclosing Instances
8.1.4 Superclasses and Subclasses
8.1.6 Class Body and Member Declarations
8.3.3 Forward References During Field Initialization
8.4.8 Inheritance, Overriding, and Hiding
8.4.8.1 Overriding (by Instance Methods)
8.4.8.2 Hiding (by Class Methods)
8.4.8.3 Requirements in Overriding and Hiding
8.4.8.4 Inheriting Methods with Override-Equivalent Signatures
8.5.1 Static Member Type Declarations
8.8.6 The Type of a Constructor
8.8.7.1 Explicit Constructor Invocations
8.8.10 Preventing Instantiation of a Class
9.1.2 Generic Interfaces and Type Parameters
9.1.3 Superinterfaces and Subinterfaces
9.1.4 Interface Body and Member Declarations
9.3 Field (Constant) Declarations
9.3.1 Initialization of Fields in Interfaces
9.4.1 Inheritance and Overriding
9.4.1.1 Overriding (by Instance Methods)
9.4.1.2 Requirements in Overriding
9.4.1.3 Inheriting Methods with Override-Equivalent Signatures
9.6.1 Annotation Type Elements
9.6.2 Defaults for Annotation Type Elements
9.6.3 Repeatable Annotation Types
9.6.4 Predefined Annotation Types
9.7.3 Single-Element Annotations
9.7.4 Where Annotations May Appear
9.7.5 Multiple Annotations of the Same Type
10.9 An Array of Characters Is Not a String
11.1 The Kinds and Causes of Exceptions
11.1.1 The Kinds of Exceptions
11.1.2 The Causes of Exceptions
11.1.3 Asynchronous Exceptions
11.2 Compile-Time Checking of Exceptions
11.2.1 Exception Analysis of Expressions
11.2.2 Exception Analysis of Statements
11.3 Run-Time Handling of an Exception
12.1 Java Virtual Machine Startup
12.1.2 Link Test
: Verify, Prepare, (Optionally) Resolve
12.1.3 Initialize Test: Execute Initializers
12.2 Loading of Classes and Interfaces
12.3 Linking of Classes and Interfaces
12.3.1 Verification of the Binary Representation
12.3.2 Preparation of a Class or Interface Type
12.3.3 Resolution of Symbolic References
12.4 Initialization of Classes and Interfaces
12.4.1 When Initialization Occurs
12.4.2 Detailed Initialization Procedure
12.5 Creation of New Class Instances
12.6 Finalization of Class Instances
12.6.1 Implementing Finalization
12.6.2 Interaction with the Memory Model
12.7 Unloading of Classes and Interfaces
13.2 What Binary Compatibility Is and Is Not
13.4.4 Superclasses and Superinterfaces
13.4.6 Class Body and Member Declarations
13.4.7 Access to Members and Constructors
13.4.9 final
Fields and static
Constant Variables
13.4.12 Method and Constructor Declarations
13.4.13 Method and Constructor Type Parameters
13.4.14 Method and Constructor Formal Parameters
13.4.21 Method and Constructor Throws
13.4.22 Method and Constructor Body
13.4.23 Method and Constructor Overloading
13.5.4 Interface Type Parameters
13.5.6 Interface Method Declarations
13.5.7 Evolution of Annotation Types
14.1 Normal and Abrupt Completion of Statements
14.4 Local Variable Declaration Statements
14.4.1 Local Variable Declarators and Types
14.4.2 Execution of Local Variable Declarations
14.9.2 The if-then-else
Statement
14.12.1 Abrupt Completion of while
Statement
14.13.1 Abrupt Completion of do
Statement
14.14.1 The basic for
Statement
14.14.1.1 Initialization of for
Statement
14.14.1.2 Iteration of for
Statement
14.14.1.3 Abrupt Completion of for
Statement
14.14.2 The enhanced for
statement
14.19 The synchronized
Statement
14.20.1 Execution of try-catch
14.20.2 Execution of try-finally
and try-catch-finally
14.20.3.1 Basic try
-with-resources
14.20.3.2 Extended try
-with-resources
15.1 Evaluation, Denotation, and Result
15.5 Expressions and Run-Time Checks
15.6 Normal and Abrupt Completion of Evaluation
15.7.1 Evaluate Left-Hand Operand First
15.7.2 Evaluate Operands before Operation
15.7.3 Evaluation Respects Parentheses and Precedence
15.7.4 Argument Lists are Evaluated Left-to-Right
15.7.5 Evaluation Order for Other Expressions
15.8.5 Parenthesized Expressions
15.9 Class Instance Creation Expressions
15.9.1 Determining the Class being Instantiated
15.9.2 Determining Enclosing Instances
15.9.3 Choosing the Constructor and its Arguments
15.9.4 Run-Time Evaluation of Class Instance Creation Expressions
15.9.5 Anonymous Class Declarations
15.9.5.1 Anonymous Constructors
15.10 Array Creation and Access Expressions
15.10.1 Array Creation Expressions
15.10.2 Run-Time Evaluation of Array Creation Expressions
15.10.3 Array Access Expressions
15.10.4 Run-Time Evaluation of Array Access Expressions
15.11 Field Access Expressions
15.11.1 Field Access Using a Primary
15.11.2 Accessing Superclass Members using super
15.12 Method Invocation Expressions
15.12.1 Compile-Time Step 1: Determine Class or Interface to Search
15.12.2 Compile-Time Step 2: Determine Method Signature
15.12.2.1 Identify Potentially Applicable Methods
15.12.2.2 Phase 1: Identify Matching Arity Methods Applicable by Strict Invocation
15.12.2.3 Phase 2: Identify Matching Arity Methods Applicable by Loose Invocation
15.12.2.4 Phase 3: Identify Methods Applicable by Variable Arity Invocation
15.12.2.5 Choosing the Most Specific Method
15.12.2.6 Method Invocation Type
15.12.3 Compile-Time Step 3: Is the Chosen Method Appropriate?
15.12.4 Run-Time Evaluation of Method Invocation
15.12.4.1 Compute Target Reference (If Necessary)
15.12.4.3 Check Accessibility of Type and Method
15.12.4.4 Locate Method to Invoke
15.12.4.5 Create Frame, Synchronize, Transfer Control
15.13 Method Reference Expressions
15.13.1 Compile-Time Declaration of a Method Reference
15.13.2 Type of a Method Reference
15.13.3 Run-Time Evaluation of Method References
15.14.2 Postfix Increment Operator ++
15.14.3 Postfix Decrement Operator --
15.15.1 Prefix Increment Operator ++
15.15.2 Prefix Decrement Operator --
15.15.4 Unary Minus Operator -
15.15.5 Bitwise Complement Operator ~
15.15.6 Logical Complement Operator !
15.17 Multiplicative Operators
15.17.1 Multiplication Operator *
15.18.1 String Concatenation Operator +
15.18.2 Additive Operators (+
and -
) for Numeric Types
15.20.1 Numerical Comparison Operators <
, <=
, >
, and >=
15.20.2 Type Comparison Operator instanceof
15.21.1 Numerical Equality Operators ==
and !=
15.21.2 Boolean Equality Operators ==
and !=
15.21.3 Reference Equality Operators ==
and !=
15.22 Bitwise and Logical Operators
15.22.1 Integer Bitwise Operators &
, ^
, and |
15.22.2 Boolean Logical Operators &
, ^
, and |
15.23 Conditional-And Operator &&
15.24 Conditional-Or Operator ||
15.25 Conditional Operator ? :
15.25.1 Boolean Conditional Expressions
15.25.2 Numeric Conditional Expressions
15.25.3 Reference Conditional Expressions
15.26.1 Simple Assignment Operator =
15.26.2 Compound Assignment Operators
15.27.3 Type of a Lambda Expression
15.27.4 Run-Time Evaluation of Lambda Expressions
16.1 Definite Assignment and Expressions
16.1.1 Boolean Constant Expressions
16.1.2 Conditional-And Operator &&
16.1.3 Conditional-Or Operator ||
16.1.4 Logical Complement Operator !
16.1.5 Conditional Operator ? :
16.1.6 Conditional Operator ? :
16.1.7 Other Expressions of Type boolean
16.2 Definite Assignment and Statements
16.2.3 Local Class Declaration Statements
16.2.4 Local Variable Declaration Statements
16.2.12.1 Initialization Part of for
Statement
16.2.12.2 Incrementation Part of for
Statement
16.2.13 break
, continue
, return
, and throw
Statements
16.2.14 synchronized
Statements
16.3 Definite Assignment and Parameters
16.4 Definite Assignment and Array Initializers
16.5 Definite Assignment and Enum Constants
16.6 Definite Assignment and Anonymous Classes
16.7 Definite Assignment and Member Types
16.8 Definite Assignment and Static Initializers
16.9 Definite Assignment, Constructors, and Instance Initializers
17.2 Wait Sets and Notification
17.2.4 Interactions of Waits, Notification, and Interruption
17.4.3 Programs and Program Order
17.4.8 Executions and Causality Requirements
17.4.9 Observable Behavior and Nonterminating Executions
17.5.1 Semantics of final
Fields
17.5.2 Reading final
Fields During Construction
17.5.3 Subsequent Modification of final
Fields
17.7 Non-Atomic Treatment of double
and long
18.2.1 Expression Compatibility Constraints
18.2.2 Type Compatibility Constraints
18.2.4 Type Equality Constraints
18.2.5 Checked Exception Constraints
18.3.1 Complementary Pairs of Bounds
18.3.2 Bounds Involving Capture Conversion
18.5.1 Invocation Applicability Inference
18.5.2 Invocation Type Inference
18.5.3 Functional Interface Parameterization Inference