Contents | Prev | Next | Index
The Java Language Specification
Pre-Release Version 1.0, Draft 5.2 - July 3, 1996
 James Gosling
Bill Joy
Guy Steele
 
 
 Series Foreword 	 
 Preface 	 
	1	 Introduction	 
- 1.1	 Example Programs	
- 1.2	 References	
	2	 Grammars	 
- 2.1	 Context-Free Grammars	
- 2.2	 The Lexical Grammar	
- 2.3	 The Syntactic Grammar	
- 2.4	 Grammar Notation	
	3	 Lexical Structure	 
- 3.1	 Unicode	
- 3.2	 Lexical Translations	
- 3.3	 Unicode Escapes	
- 3.4	 Line Terminators	
- 3.5	 Input Elements and Tokens	
- 3.6	 White Space	
- 3.7	 Comments	
- 3.8	 Identifiers	
- 3.9	 Keywords	
- 3.10	 Literals	
- 3.10.1	 Integer Literals	
- 3.10.2	 Floating-Point Literals	
- 3.10.3	 Boolean Literals	
- 3.10.4	 Character Literals	
- 3.10.5	 String Literals	
- 3.10.6	 Escape Sequences for Character and String Literals	
- 3.10.7	 The Null Literal	
- 3.11	 Separators	
- 3.12	 Operators	
	4	 Types, Values, and Variables	 
- 4.1	 Primitive Types, Reference Types, and the Null Type	
- 4.2	 Primitive Types and Values	
- 4.2.1	 Integral Types and Values	
- 4.2.2	 Integer Operations	
- 4.2.3	 Floating-Point Types and Values	
- 4.2.4	 Floating-Point Operations	
- 4.2.5	 The boolean Type and boolean Values	
- 4.3	 Reference Types, Objects, and Reference Values	
- 4.3.1	 Objects	
- 4.3.2	 The Class Object	
- 4.3.3	 The Class String	
- 4.3.4	 When Reference Types Are the Same	
- 4.4	 Where Types Are Used	
- 4.5	 Variables	
- 4.5.1	 Variables of Primitive Type	
- 4.5.2	 Variables of Reference Type	
- 4.5.3	 Kinds of Variables	
- 4.5.4	 Initial Values of Variables	
- 4.5.5	 Variables Have Types, Objects Have Classes	
	5	 Conversions and Promotions	 
- 5.1	 Kinds of Conversion	
- 5.1.1	 Identity Conversions	
- 5.1.2	 Widening Primitive Conversions	
- 5.1.3	 Narrowing Primitive Conversions	
- 5.1.4	 Widening Reference Conversions	
- 5.1.5	 Narrowing Reference Conversions	
- 5.1.6	 String Conversions	
- 5.1.7	 Forbidden Conversions	
- 5.2	 Assignment Conversion	
- 5.3	 Method Invocation Conversion	
- 5.4	 String Conversion	
- 5.5	 Casting Conversion	
- 5.6	 Numeric Promotions	
- 5.6.1	 Unary Numeric Promotion	
- 5.6.2	 Binary Numeric Promotion	
	6	 Names	 
- 6.1	 Declarations	
- 6.2	 Names	
- 6.3	 Scope of a Simple Name	
- 6.3.1	 Hiding Names	
- 6.4	 Members and Inheritance	
- 6.4.1	 The Members of a Package	
- 6.4.2	 The Members of a Class Type	
- 6.4.3	 The Members of an Interface Type	
- 6.4.4	 The Members of an Array Type	
- 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.1	 Simple Package Names	
- 6.5.3.2	 Qualified Package Names	
- 6.5.4	 Meaning of Type Names	
- 6.5.4.1	 Simple Type Names	
- 6.5.4.2	 Qualified Type Names	
- 6.5.5	 Meaning of Expression Names	
- 6.5.5.1	 Simple Expression Names	
- 6.5.5.2	 Qualified Expression Names	
- 6.5.6	 Meaning of Method Names	
- 6.5.6.1	 Simple Method Names	
- 6.5.6.2	 Qualified Method Names	
- 6.6	 Qualified Names and Access Control	
- 6.6.1	 Determining Accessibility	
- 6.6.2	 Details on protected Access	
- 6.6.3	 An Example of Access Control	
- 6.6.4	 Example: Access to public and Non-public Classes	
- 6.6.5	 Example: Default-Access Fields, Methods, and Constructors	
- 6.6.6	 Example: public Fields, Methods, and Constructors	
- 6.6.7	 Example: protected Fields, Methods, and Constructors	
- 6.6.8	 Example: private Fields, Methods, and Constructors	
- 6.7	 Fully Qualified Names	
- 6.8	 Naming Conventions	
- 6.8.1	 Package Names	
- 6.8.2	 Class and Interface Type Names	
- 6.8.3	 Method Names	
- 6.8.4	 Field Names	
- 6.8.5	 Constant Names	
- 6.8.6	 Local Variable and Parameter Names	
	7	 Packages	 
- 7.1	 Package Members	
- 7.2	 Host Support for Packages	
- 7.2.1	 Storing Packages in a File System	
- 7.2.2	 Storing Packages in a Database	
- 7.3	 Compilation Units	
- 7.4	 Package Declarations	
- 7.4.1	 Named Packages	
- 7.4.2	 Unnamed Packages	
- 7.4.3	 Scope and Hiding of a Package Name	
- 7.4.4	 Access to Members of a Package	
- 7.5	 Import Declarations	
- 7.5.1	 Single-Type-Import Declaration	
- 7.5.2	 Type-Import-on-Demand Declaration	
- 7.5.3	 Automatic Imports	
- 7.5.4	 A Strange Example	
- 7.6	 Type Declarations	
- 7.7	 Unique Package Names	
	8	 Class Declarations	 
- 8.1	 Class Declaration	
- 8.1.1	 Scope of a Class Type Name	
- 8.1.2	 Class Modifiers	
- 8.1.2.1	 abstract Classes	
- 8.1.2.2	 final Classes	
- 8.1.3	 Superclasses and Subclasses	
- 8.1.4	 Superinterfaces	
- 8.1.5	 Class Body and Member Declarations	
- 8.2	 Class Members	
- 8.2.1	 Examples of Inheritance	
- 8.2.1.1	 Example: Inheritance with Default Access	
- 8.2.1.2	 Inheritance with public and protected	
- 8.2.1.3	 Inheritance with private	
- 8.2.1.4	 Accessing Members of Inaccessible Classes	
- 8.3	 Field Declarations	
- 8.3.1	 Field Modifiers	
- 8.3.1.1	 static Fields	
- 8.3.1.2	 final Fields	
- 8.3.1.3	 transient Fields	
- 8.3.1.4	 volatile Fields	
- 8.3.2	 Initialization of Fields	
- 8.3.2.1	 Initializers for Class Variables	
- 8.3.2.2	 Initializers for Instance Variables	
- 8.3.3	 Examples of Field Declarations	
- 8.3.3.1	 Example: Hiding of Class Variables	
- 8.3.3.2	 Example: Hiding of Instance Variables	
- 8.3.3.3	 Example: Multiply Inherited Fields	
- 8.3.3.4	 Example: Re-inheritance of Fields	
- 8.4	 Method Declarations	
- 8.4.1	 Formal Parameters	
- 8.4.2	 Method Signature	
- 8.4.3	 Method Modifiers	
- 8.4.3.1	 abstract Methods	
- 8.4.3.2	 static Methods	
- 8.4.3.3	 final Methods	
- 8.4.3.4	 native Methods	
- 8.4.3.5	 synchronized Methods	
- 8.4.4	 Throws	
- 8.4.5	 Method Body	
- 8.4.6	 Inheritance, Overriding, and Hiding	
- 8.4.6.1	 Overriding (By Instance Methods)	
- 8.4.6.2	 Hiding (By Class Methods)	
- 8.4.6.3	 Requirements in Overriding and Hiding	
- 8.4.6.4	 Inheriting Methods with the Same Signature	
- 8.4.7	 Overloading	
- 8.4.8	 Examples of Method Declarations	
- 8.4.8.1	 Example: Overriding	
- 8.4.8.2	 Example: Overloading, Overriding, and Hiding	
- 8.4.8.3	 Example: Incorrect Overriding	
- 8.4.8.4	 Example: Overriding versus Hiding	
- 8.4.8.5	 Example: Invocation of Hidden Class Methods	
- 8.4.8.6	 Large Example of Overriding	
- 8.4.8.7	 Example: Incorrect Overriding because of Throws	
- 8.5	 Static Initializers	
- 8.6	 Constructor Declarations	
- 8.6.1	 Formal Parameters	
- 8.6.2	 Constructor Signature	
- 8.6.3	 Constructor Modifiers	
- 8.6.4	 Throws	
- 8.6.5	 Constructor Body	
- 8.6.6	 Constructor Overloading	
- 8.6.7	 Default Constructor	
- 8.6.8	 Preventing Instantiation of a Class	
	9	 Interface Declarations	 
- 9.1	 Interface Declarations	
- 9.1.1	 Scope of an Interface Type Name	
- 9.1.2	 Interface Modifiers	
- 9.1.2.1	 abstract Interfaces	
- 9.1.3	 Superinterfaces	
- 9.1.4	 Interface Body and Member Declarations	
- 9.1.5	 Access to Interface Member Names	
- 9.2	 Interface Members	
- 9.3	 Field (Constant) Declarations	
- 9.3.1	 Initialization of Fields in Interfaces	
- 9.3.2	 Examples of Field Declarations	
- 9.3.2.1	 Ambiguous Inherited Fields	
- 9.3.2.2	 Multiply Inherited Fields	
- 9.4	 Abstract Method Declarations	
- 9.4.1	 Inheritance and Overriding	
- 9.4.2	 Overloading	
- 9.4.3	 Examples of Abstract Method Declarations	
- 9.4.3.1	 Example: Overriding	
- 9.4.3.2	 Example: Overloading	
	10	 Arrays	 
- 10.1	 Array Types	
- 10.2	 Array Variables	
- 10.3	 Array Creation	
- 10.4	 Array Access	
- 10.5	 A Simple Example	
- 10.6	 Arrays Initializers	
- 10.7	 Array Members	
- 10.8	 Array Class Objects	
- 10.9	 An Array of Characters is Not a String	
- 10.10	 Array Store Exception	
	11	 Exceptions	 
- 11.1	 The Causes of Exceptions	
- 11.2	 Compile-Time Checking of Exceptions	
- 11.2.1	 Why Errors are Not Checked	
- 11.2.2	 Why Runtime Exceptions are Not Checked	
- 11.3	 Handling of an Exception	
- 11.3.1	 Exceptions are Precise	
- 11.3.2	 Handling Asynchronous Exceptions	
- 11.4	 An Example of Exceptions	
- 11.5	 The Exception Hierarchy	
- 11.5.1	 The Classes Exception and RuntimeException	
- 11.5.1.1	 Standard Runtime Exceptions	
- 11.5.1.2	 Standard Checked Exceptions	
- 11.5.2	 The Class Error	
- 11.5.2.1	 Loading and Linkage Errors	
- 11.5.2.2	 Virtual Machine Errors	
	12	 Execution	 
- 12.1	 Virtual Machine Start-Up	
- 12.1.1	 Load the Class Test	
- 12.1.2	 Link Test: Verify, Prepare, (Optionally) Resolve	
- 12.1.3	 Initialize Test: Execute Initializers	
- 12.1.4	 Invoke Test.main	
- 12.2	 Loading of Classes and Interfaces	
- 12.2.1	 The Loading Process	
- 12.2.2	 Implications for Code Generation	
- 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.3.4	 Implications for Code Generation	
- 12.4	 Initialization of Classes and Interfaces	
- 12.4.1	 When Initialization Occurs	
- 12.4.2	 Detailed Initialization Procedure	
- 12.4.3	 Implications for Code Generation	
- 12.5	 Creation of New Class Instances	
- 12.6	 Finalization of Class Instances	
- 12.6.1	 Implementing Finalization	
- 12.6.2	 Finalizer Invocations are Not Ordered	
- 12.7	 Finalization of Classes	
- 12.8	 Unloading of Classes and Interfaces	
- 12.9	 Virtual Machine Exit	
	13	 Binary Compatibility	 
- 13.1	 The Form of a Java Binary	
- 13.2	 What Binary Compatibility Is and Is Not	
- 13.3	 Evolution of Packages	
- 13.4	 Evolution of Classes	
- 13.4.1	 abstract Classes	
- 13.4.2	 final Classes	
- 13.4.3	 public Classes	
- 13.4.4	 Superclasses and Superinterfaces	
- 13.4.5	 Class Body and Member Declarations	
- 13.4.6	 Access to Members and Constructors	
- 13.4.7	 Field Declarations	
- 13.4.8	 final Fields and Constants	
- 13.4.9	 static Fields	
- 13.4.10	 transient Fields	
- 13.4.11	 volatile Fields	
- 13.4.12	 Method and Constructor Declarations	
- 13.4.13	 Method and Constructor Parameters	
- 13.4.14	 Method Result Type	
- 13.4.15	 abstract Methods	
- 13.4.16	 final Methods	
- 13.4.17	 native Methods	
- 13.4.18	 static Methods	
- 13.4.19	 synchronized Methods	
- 13.4.20	 Method and Constructor Throws	
- 13.4.21	 Method and Constructor Body	
- 13.4.22	 Method and Constructor Overloading	
- 13.4.23	 Method Overriding	
- 13.4.24	 Static Initializers	
- 13.5	 Evolution of Interfaces	
- 13.5.1	 public Interfaces	
- 13.5.2	 Superinterfaces	
- 13.5.3	 The Interface Members	
- 13.5.4	 Field Declarations	
- 13.5.5	 Abstract Method Declarations	
	14	 Blocks and Statements	 
- 14.1	 Normal and Abrupt Completion of Statements	
- 14.2	 Blocks	
- 14.3	 Local Variable Declaration Statements	
- 14.3.1	 Local Variable Declarators and Types	
- 14.3.2	 Scope of Local Variable Declarations	
- 14.3.3	 Hiding of Names by Local Variables	
- 14.3.4	 Execution of Local Variable Declarations	
- 14.4	 Statements	
- 14.5	 The Empty Statement	
- 14.6	 Labeled Statements	
- 14.7	 Expression Statements	
- 14.8	 The if Statement	
- 14.8.1	 The if-then Statement	
- 14.8.2	 The if-then-else Statement	
- 14.9	 The switch Statement	
- 14.10	 The while Statement	
- 14.10.1	 Abrupt Completion	
- 14.11	 The do Statement	
- 14.11.1	 Abrupt Completion	
- 14.11.2	 Example	
- 14.12	 The for Statement	
- 14.12.1	 Initialization	
- 14.12.2	 Iteration	
- 14.12.3	 Abrupt Completion	
- 14.13	 The break Statement	
- 14.14	 The continue Statement	
- 14.15	 The return Statement	
- 14.16	 The throw Statement	
- 14.17	 The synchronized Statement	
- 14.18	 The try statement	
- 14.18.1	 Execution of try-catch	
- 14.18.2	 Execution of try-catch-finally	
- 14.19	 Unreachable Statements	
	15	 Expressions	 
- 15.1	 Evaluation, Denotation, and Result	
- 15.2	 Variables as Values	
- 15.3	 Type of an Expression	
- 15.4	 Expressions and Run-Time Checks	
- 15.5	 Normal and Abrupt Completion of Evaluation	
- 15.6	 Evaluation Order	
- 15.6.1	 Left-Hand Operand First	
- 15.6.2	 Operands before Operation	
- 15.6.3	 Parentheses and Precedence Respected	
- 15.6.4	 Argument Lists Evaluated Left-to-Right	
- 15.6.5	 Ordering of Other Expressions	
- 15.7	 Primary Expressions	
- 15.7.1	 Literals	
- 15.7.2	 this	
- 15.7.3	 Parenthesized Expressions	
- 15.8	 Class Instance Creation Expressions	
- 15.8.1	 Run-time Evaluation of Class Instance Creation Expressions	
- 15.8.2	 Example: Evaluation Order and Out-of-Memory Detection	
- 15.9	 Array Creation Expressions	
- 15.9.1	 Run-time Evaluation of Array Creation Expressions	
- 15.9.2	 Example: Evaluation Order	
- 15.9.3	 Example: Evaluation Order and Out-of-Memory Detection	
- 15.10	 Field Access Expressions	
- 15.10.1	 Field Access Using a Primary	
- 15.10.2	 Accessing Superclass Members using super	
- 15.11	 Method Invocation Expressions	
- 15.11.1	 Compile-Time Step 1: Determine Class or Interface to Search	
- 15.11.2	 Compile-Time Step 2: Determine Method Signature	
- 15.11.2.1	 Find Methods that are Applicable and Accessible	
- 15.11.2.2	 Choose the Most Specific Method	
- 15.11.2.3	 Example: Overloading Ambiguity	
- 15.11.2.4	 Example: Return Type Not Considered	
- 15.11.2.5	 Example: Compile-Time Resolution	
- 15.11.3	 Compile-Time Step 3: Is the Chosen Method Appropriate?	
- 15.11.4	 Runtime Evaluation of Method Invocation	
- 15.11.4.1	 Compute Target Reference (If Necessary)	
- 15.11.4.2	 Evaluate Arguments	
- 15.11.4.3	 Check Accessibility of Type and Method	
- 15.11.4.4	 Locate Method to Invoke	
- 15.11.4.5	 Create Frame, Synchronize, Transfer Control	
- 15.11.4.6	 Implementation Note: Combining Frames	
- 15.11.4.7	 Example: Target Reference and Static Methods	
- 15.11.4.8	 Example: Evaluation Order	
- 15.11.4.9	 Example: Overriding	
- 15.11.4.10	 Example: Method Invocation using super	
- 15.12	 Array Access Expressions	
- 15.12.1	 Run-time Evaluation	
- 15.12.2	 Examples: Array Access Evaluation Order	
- 15.13	 Postfix Expressions	
- 15.13.1	 Names	
- 15.13.2	 Postfix Increment Operator ++	
- 15.13.3	 Postfix Decrement Operator --	
- 15.14	 Unary Operators	
- 15.14.1	 Prefix Increment Operator ++	
- 15.14.2	 Prefix Decrement Operator --	
- 15.14.3	 Unary Plus Operator +	
- 15.14.4	 Unary Minus Operator -	
- 15.14.5	 Bitwise Complement Operator ~	
- 15.14.6	 Logical Complement Operator !	
- 15.15	 Cast Expressions	
- 15.16	 Multiplicative Operators	
- 15.16.1	 Multiplication Operator *	
- 15.16.2	 Division Operator /	
- 15.16.3	 Remainder Operator %	
- 15.17	 Additive Operators	
- 15.17.1	 String Concatenation Operator +	
- 15.17.1.1	 String Conversion	
- 15.17.1.2	 Optimization of String Concatenation	
- 15.17.1.3	 Examples of String Concatenation	
- 15.17.2	 Additive Operators (+ and -) for Numeric Types	
- 15.18	 Shift Operators	
- 15.19	 Relational Operators	
- 15.19.1	 Numerical Comparison Operators <, <=, >, and >=	
- 15.19.2	 Type Comparison Operator instanceof	
- 15.20	 Equality Operators	
- 15.20.1	 Numerical Equality Operators == and !=	
- 15.20.2	 Boolean Equality Operators == and !=	
- 15.20.3	 Reference Equality Operators == and !=	
- 15.21	 Bitwise and Logical Operators	
- 15.21.1	 Integer Bitwise Operators &, ^, and |	
- 15.21.2	 Boolean Logical Operators &, ^, and |	
- 15.22	 Conditional-And Operator &&	
- 15.23	 Conditional-Or Operator ||	
- 15.24	 Conditional Operator ? :	
- 15.25	 Assignment Operators	
- 15.25.1	 Simple Assignment Operator =	
- 15.25.2	 Compound Assignment Operators	
- 15.26	 Expression	
- 15.27	 Constant Expression	
	16	 Definite Assignment	 
- 16.1	 Definite Assignment and Expressions	
- 16.1.1	 Boolean Constant Expressions	
- 16.1.2	 Boolean-valued Expressions	
- 16.1.3	 The Boolean Operator &&	
- 16.1.4	 The Boolean Operator ||	
- 16.1.5	 The Boolean Operator !	
- 16.1.6	 The Boolean Operator &	
- 16.1.7	 The Boolean Operator |	
- 16.1.8	 The Boolean Operator ^	
- 16.1.9	 The Boolean Operator ==	
- 16.1.10	 The Boolean Operator !=	
- 16.1.11	 The Boolean Operator ? :	
- 16.1.12	 The Conditional Operator ? :	
- 16.1.13	 Boolean Assignment Expressions	
- 16.1.14	 Other Assignment Expressions	
- 16.1.15	 Operators ++ and --	
- 16.1.16	 Other Expressions	
- 16.2	 Definite Assignment and Statements	
- 16.2.1	 Empty Statements	
- 16.2.2	 Blocks	
- 16.2.3	 Local Variable Declaration Statements	
- 16.2.4	 Labeled Statements	
- 16.2.5	 Expression Statements	
- 16.2.6	 if Statements	
- 16.2.7	 switch Statements	
- 16.2.8	 while Statements	
- 16.2.9	 do Statements	
- 16.2.10	 for Statements	
- 16.2.10.1	 Initialization Part	
- 16.2.10.2	 Incrementation Part	
- 16.2.11	 break, continue, return, and throw Statements	
- 16.2.12	 synchronized Statements	
- 16.2.13	 try Statements	
	17	 Threads and Locks	 
- 17.1	 Terminology and Framework	
- 17.2	 Execution Order and Consistency	
- 17.3	 Rules about Variables	
- 17.4	 Nonatomic Treatment of Double and Long Variables	
- 17.5	 Rules about Locks	
- 17.6	 Rules about the Interaction of Locks and Variables	
- 17.7	 Rules for Volatile Variables	
- 17.8	 Prescient Store Operations	
- 17.9	 Discussion	
- 17.10	 Example: Possible Swap	
- 17.11	 Example: Out-of-Order Writes	
- 17.12	 Threads	
- 17.13	 Locks and Synchronization	
- 17.14	 Wait Sets and Notification	
	18	 Documentation Comments	 
- 18.1	 The Text of a Documentation Comment	
- 18.2	 HTML in a Documentation Comment	
- 18.3	 Summary Sentence and General Description	
- 18.4	 Tagged Paragraphs	
- 18.4.1	 The @see Tag	
- 18.4.2	 The @author Tag	
- 18.4.3	 The @version Tag	
- 18.4.4	 The @param Tag	
- 18.4.5	 The @return Tag	
- 18.4.6	 The @exception Tag	
- 18.5	 Example	
	19	 LALR(1) Java Grammar	 
- 19.1	 Grammatical Difficulties	
- 19.1.1	 Problem #1: Names Too Specific	
- 19.1.2	 Problem #2: Modifiers Too Specific	
- 19.1.3	 Problem #3: Field Declaration versus Method Declaration	
- 19.1.4	 Problem #4: Array Type versus Array Access	
- 19.1.5	 Problem #5: Cast versus Parenthesized Expression	
- 19.2	 Productions from §2.3: The Syntactic Grammar	
- 19.3	 Productions from §3: Lexical Structure	
- 19.4	 Productions from §4: Types, Values, and Variables	
- 19.5	 Productions from §6: Names	
- 19.6	 Productions from §7: Packages	
- 19.7	 Productions Used Only in the LALR(1) Grammar	
- 19.8	 Productions from §8: Class Declarations	
- 19.8.1	 Productions from §8.1: Class Declaration	
- 19.8.2	 Productions from §8.3: Field Declarations	
- 19.8.3	 Productions from §8.4: Method Declarations	
- 19.8.4	 Production from §8.5: Static Initializers	
- 19.8.5	 Productions from §8.6: Constructor Declarations	
- 19.9	 Productions from §9: Interface Declarations	
- 19.9.1	 Productions from §9.1: Interface Declarations	
- 19.10	 Productions from §10: Arrays	
- 19.11	 Productions from §14: Blocks and Statements	
- 19.12	 Productions from §15: Expressions	
	20	 The java.lang Package	 
- 20.1	 The Class java.lang.Object	
- 20.2	 The Interface java.lang.Cloneable	
- 20.3	 The Class java.lang.Class	
- 20.4	 The Class java.lang.Boolean	
- 20.5	 The Class java.lang.Character	
- 20.6	 The Class java.lang.Number	
- 20.7	 The Class java.lang.Integer	
- 20.8	 The Class java.lang.Long	
- 20.9	 The Class java.lang.Float	
- 20.10	 The Class java.lang.Double	
- 20.11	 The Class java.lang.Math	
- 20.12	 The Class java.lang.String	
- 20.13	 The Class java.lang.StringBuffer	
- 20.14	 The Class java.lang.ClassLoader	
- 20.15	 The Class java.lang.Process	
- 20.16	 The Class java.lang.Runtime	
- 20.17	 The Class java.lang.SecurityManager	
- 20.18	 The Class java.lang.System	
- 20.19	 The Interface java.lang.Runnable	
- 20.20	 The Class java.lang.Thread	
- 20.21	 The Class java.lang.ThreadGroup	
- 20.22	 Classes for Exceptions and Errors	
- 20.23	 The Class java.lang.ExceptionInInitializerError	
	21	 The java.util Package	 
- 21.1	 The Interface java.util.Enumeration	
- 21.2	 The Class java.util.BitSet	
- 21.3	 The Class java.util.Date	
- 21.4	 The Class java.util.Dictionary	
- 21.5	 The Class java.util.Hashtable	
- 21.6	 The Class java.util.Properties	
- 21.7	 The Class java.util.Observable	
- 21.8	 The Interface java.util.Observer	
- 21.9	 The Class java.util.Random	
- 21.10	 The Class java.util.StringTokenizer	
- 21.11	 The Class java.util.Vector	
- 21.12	 The Class java.util.Stack	
- 21.13	 The Class java.util.EmptyStackException	
- 21.14	 The Class java.util.NoSuchElementException	
	22	 The java.io Package	 
- 22.1	 The Interface java.io.DataInput	
- 22.2	 The Interface java.io.DataOutput	
- 22.3	 The Class java.io.InputStream	
- 22.4	 The Class java.io.FileInputStream	
- 22.5	 The Class java.io.PipedInputStream	
- 22.6	 The Class java.io.ByteArrayInputStream	
- 22.7	 The Class java.io.StringBufferInputStream	
- 22.8	 The Class java.io.SequenceInputStream	
- 22.9	 The Class java.io.FilterInputStream	
- 22.10	 The Class java.io.BufferedInputStream	
- 22.11	 The Class java.io.DataInputStream	
- 22.12	 The Class java.io.LineNumberInputStream	
- 22.13	 The Class java.io.PushbackInputStream	
- 22.14	 The Class java.io.StreamTokenizer	
- 22.15	 The Class java.io.OutputStream	
- 22.16	 The Class java.io.FileOutputStream	
- 22.17	 The Class java.io.PipedOutputStream	
- 22.18	 The Class java.io.ByteArrayOutputStream	
- 22.19	 The Class java.io.FilterOutputStream	
- 22.20	 The Class java.io.BufferedOutputStream	
- 22.21	 The Class java.io.DataOutputStream	
- 22.22	 The Class java.io.PrintStream	
- 22.23	 The Class java.io.RandomAccessFile	
- 22.24	 The Class java.io.File	
- 22.25	 The Interface java.io.FilenameFilter	
- 22.26	 The Class java.io.FileDescriptor	
- 22.27	 The Class java.io.IOException	
- 22.28	 The Class java.io.EOFException	
- 22.29	 The Class java.io.FileNotFoundException	
- 22.30	 The Class java.io.InterruptedIOException	
- 22.31	 The Class java.io.UTFDataFormatException	
 Index 	 
 Colophon 	 
 	``When I use a word," Humpty Dumpty said,
 in rather a scornful tone, "it means just what I
 choose it to mean-neither more nor less."
 	"The question is," said Alice, "whether you
 can make words mean so many different things."
 	"The question is," said Humpty Dumpty,
 "which is to be master-that's all."
 
 -Lewis Carroll, Through the Looking Glass
 
 
Contents | Prev | Next | Index
Copyright © 1996 Sun Microsystems, Inc.   All rights reserved.