jsp(3)-1-10
jsp(3)-1-10
jsp(3)-1-10
Language Specification
Second Edition
The Java™ Series
Lisa Friendly, Series Editor
Bill Joy, Technical Advisor
ADDISON-WESLEY
An imprint of Addison Wesley Longman, Inc.
Reading, Massachusetts Harlow, England Menlo Park, California
● ●
Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix
1 Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1 Example Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 Relationship to Predefined Classes and Interfaces . . . . . . . . . . . . . . . . . . . . 6
1.4 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 Grammars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1 Context-Free Grammars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2 The Lexical Grammar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3 The Syntactic Grammar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.4 Grammar Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3 Lexical Structure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.1 Unicode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2 Lexical Translations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.3 Unicode Escapes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.4 Line Terminators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.5 Input Elements and Tokens. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.6 White Space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.7 Comments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.8 Identifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.9 Keywords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.10 Literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.10.1 Integer Literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.10.2 Floating-Point Literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.10.3 Boolean Literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.10.4 Character Literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.10.5 String Literals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.10.6 Escape Sequences for Character and String Literals . . . . . . . . . . 28
3.10.7 The Null Literal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
vii
TABLE OF CONTENTS
3.11 Separators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.12 Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
6 Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
6.1 Declarations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
viii
TABLE OF CONTENTS
ix
TABLE OF CONTENTS
7 Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
7.1 Package Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
7.2 Host Support for Packages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
7.2.1 Storing Packages in a File System . . . . . . . . . . . . . . . . . . . . . . . 121
7.2.2 Storing Packages in a Database. . . . . . . . . . . . . . . . . . . . . . . . . . 122
7.3 Compilation Units . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
7.4 Package Declarations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
7.4.1 Named Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
7.4.2 Unnamed Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
7.4.3 Observability of a Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
7.4.4 Scope of a Package Declaration . . . . . . . . . . . . . . . . . . . . . . . . . 125
7.5 Import Declarations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
7.5.1 Single-Type-Import Declaration . . . . . . . . . . . . . . . . . . . . . . . . . 126
7.5.2 Type-Import-on-Demand Declaration . . . . . . . . . . . . . . . . . . . . . 127
7.5.3 Automatic Imports. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
7.5.4 A Strange Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
7.6 Top Level Type Declarations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
7.7 Unique Package Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
8 Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
8.1 Class Declaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
8.1.1 Class Modifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
8.1.1.1 abstract Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
8.1.1.2 final Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
8.1.1.3 strictfp Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
8.1.2 Inner Classes and Enclosing Instances . . . . . . . . . . . . . . . . . . . . 140
8.1.3 Superclasses and Subclasses . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
8.1.4 Superinterfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
8.1.5 Class Body and Member Declarations . . . . . . . . . . . . . . . . . . . . 147
8.2 Class Members. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
8.2.1 Examples of Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
8.2.1.1 Example: Inheritance with Default Access . . . . . . . . 149
8.2.1.2 Inheritance with public and protected . . . . . . . . . 150
8.2.1.3 Inheritance with private . . . . . . . . . . . . . . . . . . . . . 151
8.2.1.4 Accessing Members of Inaccessible Classes. . . . . . . 151
8.3 Field Declarations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
8.3.1 Field Modifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
8.3.1.1 static Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
8.3.1.2 final Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
8.3.1.3 transient Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
8.3.1.4 volatile Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
8.3.2 Initialization of Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
8.3.2.1 Initializers for Class Variables . . . . . . . . . . . . . . . . . . 159
8.3.2.2 Initializers for Instance Variables . . . . . . . . . . . . . . . 159
8.3.2.3 Restrictions on the use of Fields during Initialization160
8.3.3 Examples of Field Declarations . . . . . . . . . . . . . . . . . . . . . . . . . 162
8.3.3.1 Example: Hiding of Class Variables . . . . . . . . . . . . . 162