1 - Структура язака
2 - Lexical Issues
2.1 - Comments
2.2 - Identifiers
2.3 - Keywords
2.4 - Literals
2.4.1 - Integer Literals
2.4.2 - Floating Point Literals
2.4.3 - Boolean Literals
2.4.4 - Character Literals
2.4.5 - String Literals
2.5 - Operators and Miscellaneous Separators
3 - Types
3.1 - Numeric Types
3.1.1 - Integer Types
3.1.2 - Floating Point Types
3.1.3 - Character Types
3.2 - Boolean Types
3.3 - Arrays
3.3.1 - Array Detail
4 - Classes
4.1 - Casting Between Class Types
4.2 - Methods
4.2.1 - Instance Variables
4.2.2 - The this and super Variables
4.2.3 - Setting Local Variables
4.3 - Overriding Methods
4.4 - Overload Resolution
4.5 - Constructors
4.6 - Object Creation--the new Operator
4.6.1 - Garbage Collection
4.6.2 - Finalization
4.6.3 - The null Reference
4.7 - Static Methods, Variables, and Initializers
4.7.1 - Order of Declarations
4.7.2 - Order of Initialization
4.8 - Access Specifiers
4.10.1 - Threadsafe Variables
4.10.2 - Transient Variables
4.10.3 - Final Classes, Methods, and Variables
4.10.4 - Native Methods
4.10.5 - Abstract Methods
4.10.6 - Synchronized Methods and Blocks
5 - Interfaces
5.1 - Interfaces as Types
5.2 - Methods in Interfaces
5.3 - Variables in Interfaces
5.4 - Combining Interfaces
6 - Packages
6.1 - Specifying a Compilation Unit's Package
6.2 - Using Classes and Interfaces from Other Packages
7 - Expressions
7.1 - Operators
7.1.1 - Operators on Integers
7.1.2 - Operators on Boolean Values
7.1.3 - Operators on Floating Point Values
7.1.4 - Operators on Arrays
7.1.5 - Operators on Strings
7.1.6 - Operators on Objects
7.2 - Casts and Conversions
8 - Statements
8.1 - Declarations
8.2 - Expressions
8.3 - Control Flow
8.4 - Exceptions
8.4.1 - The finally Statement
8.4.2 - Runtime Exceptions
A - Appendix: Floating Point
A.1 - Special Values
A.2 - Binary Format Conversion
A.3 - Ordering
A.4 - Summary of IEEE-754 Differences
B - Appendix: Java Language Grammar
CompilationUnit = PackageStatement? ImportStatement* TypeDeclaration* ; PackageStatement = `package' PackageName `;' ; ImportStatement = `import' PackageName `.' `*' `;' | `import' ( ClassName | InterfaceName )`;' ; TypeDeclaration = ClassDeclaration | InterfaceDeclaration | `;' ; ClassDeclaration = Modifier* `class' Identifier (`extends' ClassName)? (`implements' InterfaceName (`,' InterfaceName)*)? `{' FieldDeclaration* `}' ; InterfaceDeclaration = Modifier* `interface' Identifier (`extends' InterfaceName (`,' InterfaceName)*)? `{' FieldDeclaration* `}' ; FieldDeclaration = DocComment? MethodDeclaration | DocComment? ConstructorDeclaration | DocComment? VariableDeclaration | StaticInitializer | `;' ; MethodDeclaration = Modifier* Type Identifier `(' ParameterList? `)' ( `[' `]' )* ( `{' Statement* `}' | `;' ) ; ConstructorDeclaration = Modifier* Identifier `(' ParameterList? `)' `{' Statement* `}' ; VariableDeclaration = Modifier* Type VariableDeclarator (`,' VariableDeclarator)* `;' ; VariableDeclarator = Identifier (`[' `]')* (`=' VariableInitializer)? ; VariableInitializer = Expression | `{' ( VariableInitializer ( `,' VariableInitializer )* `,'? )? `}' ; StaticInitializer = `static' `{' Statement* `}' ; ParameterList = Parameter (`,' Parameter)* ; Parameter = TypeSpecifier Identifier (`[' `]')* ; Statement = VariableDeclaration | Expression `;' | `{' Statement* `}' | `if' `(' Expression `)' Statement (`else' Statement)? | `while' `(' Expression `)' Statement | `do' Statement `while' `(' Expression `)' `;' | `try' Statement (`catch' `(' Parameter `)' Statement)* (`finally' Statement)? | `switch' `(' Expression `)' `{' Statement* `}' | `synchronized' `(' Expression `)' Statement | `return' Expression? `;' | `throw' Expression `;' | `case' Expression `:' | `default' `:' | Identifier `:' Statement | `break' Identifier? `;' | `continue' Identifier? `;' | `;' ; Expression = Expression `+' Expression | Expression `-' Expression | Expression `*' Expression | Expression `/' Expression | Expression `%' Expression | Expression `^' Expression | Expression `&;' Expression | Expression `|' Expression | Expression `&;&;' Expression | Expression `||' Expression | Expression `<;<;` Expression | Expression `;;' Expression | Expression `;;;' Expression | Expression `=' Expression | Expression `+=' Expression | Expression `-=' Expression | Expression `*=' Expression | Expression `/=' Expression | Expression `%=' Expression | Expression `^=' Expression | Expression `&;=' Expression | Expression `|=' Expression | Expression `<;<;=' Expression | Expression `;;=' Expression | Expression `;;;=' Expression | Expression `<;` Expression | Expression `;' Expression | Expression `<;=' Expression | Expression `;=' Expression | Expression `==' Expression | Expression `!=' Expression | Expression `.' Expression | Expression `,' Expression | Expression `instanceof' ( ClassName | InterfaceName ) | Expression `?' Expression `:' Expression | Expression `[' Expression `]' | `++' Expression | `--' Expression | Expression `++' | Expression `--' | `-' Expression | `!' Expression | `~' Expression | `(' Expression `)' | `(' Type `)' Expression | Expression `(' ArgList? `)' | `new' ClassName `(' ArgList?`)' | `new' TypeSpecifier ( `[' Expression `]' )+ (`[' `]')* | `new' `(' Expression `)' | `true' | `false' | `null' | `super' | `this' | Identifier | Number | String | Character ; ArgList = Expression (`,' Expression )* ; Type = TypeSpecifier (`[' `]')* ; TypeSpecifier = `boolean' | `byte' | `char' | `short' | `int' | `float' | `long' | `double' | ClassName | InterfaceName ; Modifier = `public' | `private' | `protected' | `static' | `final' | `native' | `synchronized' | `abstract' | `threadsafe' | `transient' ; PackageName = Identifier | PackageName `.' Identifier ; ClassName = Identifier | PackageName `.' Identifier ; InterfaceName = Identifier | PackageName `.' Identifier ;