Contents | Prev | Next | Index

The Java Language Specification

James Gosling
Bill Joy
Guy Steele

Version 1.0
(Converted from the printed book, August 1996, first printing)

See also Changes for Java 1.1.


Series Foreword xxi

Preface xxiii

1 Introduction 1

1.1 Example Programs 5
1.2 References 6

2 Grammars 7

2.1 Context-Free Grammars 7
2.2 The Lexical Grammar 7
2.3 The Syntactic Grammar 8
2.4 Grammar Notation 8

3 Lexical Structure 11

3.1 Unicode 11
3.2 Lexical Translations 12
3.3 Unicode Escapes 12
3.4 Line Terminators 13
3.5 Input Elements and Tokens 14
3.6 White Space 15
3.7 Comments 15
3.8 Identifiers 17
3.9 Keywords 18
3.10 Literals 19
3.10.1 Integer Literals 19
3.10.2 Floating-Point Literals 22
3.10.3 Boolean Literals 23
3.10.4 Character Literals 24
3.10.5 String Literals 25
3.10.6 Escape Sequences for Character and String Literals 26
3.10.7 The Null Literal 27
3.11 Separators 27
3.12 Operators 28

4 Types, Values, and Variables 29

4.1 The Kinds of Types and Values 30
4.2 Primitive Types and Values 30
4.2.1 Integral Types and Values 31
4.2.2 Integer Operations 31
4.2.3 Floating-Point Types and Values 33
4.2.4 Floating-Point Operations 34
4.2.5 The boolean Type and boolean Values 36
4.3 Reference Types and Values 37
4.3.1 Objects 38
4.3.2 The Class Object 40
4.3.3 The Class String 41
4.3.4 When Reference Types Are the Same 42
4.4 Where Types Are Used 42
4.5 Variables 43
4.5.1 Variables of Primitive Type 44
4.5.2 Variables of Reference Type 44
4.5.3 Kinds of Variables 44
4.5.4 Initial Values of Variables 46
4.5.5 Variables Have Types, Objects Have Classes 47

5 Conversions and Promotions 51

5.1 Kinds of Conversion 54
5.1.1 Identity Conversions 54
5.1.2 Widening Primitive Conversions 54
5.1.3 Narrowing Primitive Conversions 55
5.1.4 Widening Reference Conversions 58
5.1.5 Narrowing Reference Conversions 59
5.1.6 String Conversions 60
5.1.7 Forbidden Conversions 60
5.2 Assignment Conversion 61
5.3 Method Invocation Conversion 66
5.4 String Conversion 67
5.5 Casting Conversion 67
5.6 Numeric Promotions 72
5.6.1 Unary Numeric Promotion 73
5.6.2 Binary Numeric Promotion 74

6 Names 77

6.1 Declarations 78
6.2 Names and Identifiers 79
6.3 Scope of a Simple Name 81
6.3.1 Hiding Names 83
6.4 Members and Inheritance 85
6.4.1 The Members of a Package 85
6.4.2 The Members of a Class Type 86
6.4.3 The Members of an Interface Type 87
6.4.4 The Members of an Array Type 88
6.5 Determining the Meaning of a Name 89
6.5.1 Syntactic Classification of a Name According to Context 90
6.5.2 Reclassification of Contextually Ambiguous Names 91
6.5.3 Meaning of Package Names 93
6.5.3.1 Simple Package Names 93
6.5.3.2 Qualified Package Names 93
6.5.4 Meaning of Type Names 93
6.5.4.1 Simple Type Names 93
6.5.4.2 Qualified Type Names 94
6.5.5 Meaning of Expression Names 95
6.5.5.1 Simple Expression Names 95
6.5.5.2 Qualified Expression Names 96
6.5.6 Meaning of Method Names 98
6.5.6.1 Simple Method Names 98
6.5.6.2 Qualified Method Names 98
6.6 Qualified Names and Access Control 99
6.6.1 Determining Accessibility 99
6.6.2 Details on protected Access 100
6.6.3 An Example of Access Control 100
6.6.4 Example: Access to public and Non-public Classes 101
6.6.5 Example: Default-Access Fields, Methods, and Constructors 102
6.6.6 Example: public Fields, Methods, and Constructors 103
6.6.7 Example: protected Fields, Methods, and Constructors 104
6.6.8 Example: private Fields, Methods, and Constructors 105
6.7 Fully Qualified Names 105
6.8 Naming Conventions 106
6.8.1 Package Names 107
6.8.2 Class and Interface Type Names 108
6.8.3 Method Names 108
6.8.4 Field Names 109
6.8.5 Constant Names 109
6.8.6 Local Variable and Parameter Names 110

7 Packages 113

7.1 Package Members 114
7.2 Host Support for Packages 115
7.2.1 Storing Packages in a File System 115
7.2.2 Storing Packages in a Database 117
7.3 Compilation Units 117
7.4 Package Declarations 118
7.4.1 Named Packages 118
7.4.2 Unnamed Packages 119
7.4.3 Scope and Hiding of a Package Name 120
7.4.4 Access to Members of a Package 120
7.5 Import Declarations 120
7.5.1 Single-Type-Import Declaration 121
7.5.2 Type-Import-on-Demand Declaration 122
7.5.3 Automatic Imports 122
7.5.4 A Strange Example 123
7.6 Type Declarations 124
7.7 Unique Package Names 125

8 Classes 127

8.1 Class Declaration 128
8.1.1 Scope of a Class Type Name 130
8.1.2 Class Modifiers 130
8.1.2.1 abstract Classes 131
8.1.2.2 final Classes 133
8.1.3 Superclasses and Subclasses 133
8.1.4 Superinterfaces 135
8.1.5 Class Body and Member Declarations 138
8.2 Class Members 138
8.2.1 Examples of Inheritance 139
8.2.1.1 Example: Inheritance with Default Access 140
8.2.1.2 Inheritance with public and protected 141
8.2.1.3 Inheritance with private 141
8.2.1.4 Accessing Members of Inaccessible Classes 142
8.3 Field Declarations 143
8.3.1 Field Modifiers 144
8.3.1.1 static Fields 145
8.3.1.2 final Fields 146
8.3.1.3 transient Fields 147
8.3.1.4 volatile Fields 147
8.3.2 Initialization of Fields 149
8.3.2.1 Initializers for Class Variables 149
8.3.2.2 Initializers for Instance Variables 150
8.3.3 Examples of Field Declarations 151
8.3.3.1 Example: Hiding of Class Variables 151
8.3.3.2 Example: Hiding of Instance Variables 152
8.3.3.3 Example: Multiply Inherited Fields 153
8.3.3.4 Example: Re-inheritance of Fields 154
8.4 Method Declarations 155
8.4.1 Formal Parameters 156
8.4.2 Method Signature 157
8.4.3 Method Modifiers 157
8.4.3.1 abstract Methods 158
8.4.3.2 static Methods 160
8.4.3.3 final Methods 160
8.4.3.4 native Methods 161
8.4.3.5 synchronized Methods 161
8.4.4 Method Throws 163
8.4.5 Method Body 164
8.4.6 Inheritance, Overriding, and Hiding 165
8.4.6.1 Overriding (By Instance Methods) 165
8.4.6.2 Hiding (By Class Methods) 165
8.4.6.3 Requirements in Overriding and Hiding 166
8.4.6.4 Inheriting Methods with the Same Signature 166
8.4.7 Overloading 167
8.4.8 Examples of Method Declarations 168
8.4.8.1 Example: Overriding 168
8.4.8.2 Example: Overloading, Overriding, and Hiding 168
8.4.8.3 Example: Incorrect Overriding 169
8.4.8.4 Example: Overriding versus Hiding 170
8.4.8.5 Example: Invocation of Hidden Class Methods 171
8.4.8.6 Large Example of Overriding 172
8.4.8.7 Example: Incorrect Overriding because of Throws 174
8.5 Static Initializers 175
8.6 Constructor Declarations 176
8.6.1 Formal Parameters 177
8.6.2 Constructor Signature 177
8.6.3 Constructor Modifiers 177
8.6.4 Constructor Throws 178
8.6.5 Constructor Body 178
8.6.6 Constructor Overloading 180
8.6.7 Default Constructor 180
8.6.8 Preventing Instantiation of a Class 180

9 Interfaces 183

9.1 Interface Declarations 184
9.1.1 Scope of an Interface Type Name 184
9.1.2 Interface Modifiers 184
9.1.2.1 abstract Interfaces 184
9.1.3 Superinterfaces 185
9.1.4 Interface Body and Member Declarations 185
9.1.5 Access to Interface Member Names 186
9.2 Interface Members 186
9.3 Field (Constant) Declarations 186
9.3.1 Initialization of Fields in Interfaces 187
9.3.2 Examples of Field Declarations 188
9.3.2.1 Ambiguous Inherited Fields 188
9.3.2.2 Multiply Inherited Fields 188
9.4 Abstract Method Declarations 189
9.4.1 Inheritance and Overriding 189
9.4.2 Overloading 190
9.4.3 Examples of Abstract Method Declarations 190
9.4.3.1 Example: Overriding 190
9.4.3.2 Example: Overloading 191

10 Arrays 193

10.1 Array Types 194
10.2 Array Variables 194
10.3 Array Creation 195
10.4 Array Access 195
10.5 Arrays: A Simple Example 196
10.6 Arrays Initializers 196
10.7 Array Members 197
10.8 Class Objects for Arrays 199
10.9 An Array of Characters is Not a String 199
10.10 Array Store Exception 199

11 Exceptions 201

11.1 The Causes of Exceptions 202
11.2 Compile-Time Checking of Exceptions 203
11.2.1 Why Errors are Not Checked 203
11.2.2 Why Runtime Exceptions are Not Checked 203
11.3 Handling of an Exception 204
11.3.1 Exceptions are Precise 205
11.3.2 Handling Asynchronous Exceptions 205
11.4 An Example of Exceptions 206
11.5 The Exception Hierarchy 208
11.5.1 The Classes Exception and RuntimeException 208
11.5.1.1 Standard Runtime Exceptions 208
11.5.1.2 Standard Checked Exceptions 210
11.5.2 The Class Error 211
11.5.2.1 Loading and Linkage Errors 211
11.5.2.2 Virtual Machine Errors 212

12 Execution 215

12.1 Virtual Machine Start-Up 215
12.1.1 Load the Class Test 216
12.1.2 Link Test: Verify, Prepare, (Optionally) Resolve 216
12.1.3 Initialize Test: Execute Initializers 217
12.1.4 Invoke Test.main 218
12.2 Loading of Classes and Interfaces 218
12.2.1 The Loading Process 219
12.2.2 Loading: Implications for Code Generation 219
12.3 Linking of Classes and Interfaces 220
12.3.1 Verification of the Binary Representation 220
12.3.2 Preparation of a Class or Interface Type 221
12.3.3 Resolution of Symbolic References 221
12.3.4 Linking: Implications for Code Generation 222
12.4 Initialization of Classes and Interfaces 223
12.4.1 When Initialization Occurs 223
12.4.2 Detailed Initialization Procedure 225
12.4.3 Initialization: Implications for Code Generation 227
12.5 Creation of New Class Instances 228
12.6 Finalization of Class Instances 231
12.6.1 Implementing Finalization 232
12.6.2 Finalizer Invocations are Not Ordered 234
12.7 Finalization of Classes 235
12.8 Unloading of Classes and Interfaces 235
12.9 Virtual Machine Exit 235

13 Binary Compatibility 237

13.1 The Form of a Java Binary 238
13.2 What Binary Compatibility Is and Is Not 240
13.3 Evolution of Packages 242
13.4 Evolution of Classes 242
13.4.1 abstract Classes 242
13.4.2 final Classes 242
13.4.3 public Classes 243
13.4.4 Superclasses and Superinterfaces 243
13.4.5 Class Body and Member Declarations 245
13.4.6 Access to Members and Constructors 248
13.4.7 Field Declarations 249
13.4.8 final Fields and Constants 250
13.4.9 static Fields 253
13.4.10 transient Fields 253
13.4.11 volatile Fields 253
13.4.12 Method and Constructor Declarations 253
13.4.13 Method and Constructor Parameters 254
13.4.14 Method Result Type 254
13.4.15 abstract Methods 254
13.4.16 final Methods 255
13.4.17 native Methods 256
13.4.18 static Methods 256
13.4.19 synchronized Methods 256
13.4.20 Method and Constructor Throws 256
13.4.21 Method and Constructor Body 257
13.4.22 Method and Constructor Overloading 257
13.4.23 Method Overriding 258
13.4.24 Static Initializers 259
13.5 Evolution of Interfaces 259
13.5.1 public Interfaces 259
13.5.2 Superinterfaces 260
13.5.3 The Interface Members 260
13.5.4 Field Declarations 260
13.5.5 Abstract Method Declarations 261

14 Blocks and Statements 263

14.1 Normal and Abrupt Completion of Statements 264
14.2 Blocks 265
14.3 Local Variable Declaration Statements 265
14.3.1 Local Variable Declarators and Types 266
14.3.2 Scope of Local Variable Declarations 267
14.3.3 Hiding of Names by Local Variables 268
14.3.4 Execution of Local Variable Declarations 269
14.4 Statements 269
14.5 The Empty Statement 271
14.6 Labeled Statements 271
14.7 Expression Statements 272
14.8 The if Statement 273
14.8.1 The if-then Statement 273
14.8.2 The if-then-else Statement 273
14.9 The switch Statement 274
14.10 The while Statement 277
14.10.1 Abrupt Completion 278
14.11 The do Statement 278
14.11.1 Abrupt Completion 279
14.11.2 Example of do statement 280
14.12 The for Statement 280
14.12.1 Initialization of for statement 281
14.12.2 Iteration of for statement 281
14.12.3 Abrupt Completion of for statement 282
14.13 The break Statement 283
14.14 The continue Statement 285
14.15 The return Statement 286
14.16 The throw Statement 287
14.17 The synchronized Statement 289
14.18 The try statement 290
14.18.1 Execution of try-catch 291
14.18.2 Execution of try-catch-finally 292
14.19 Unreachable Statements 295

15 Expressions 301

15.1 Evaluation, Denotation, and Result 301
15.2 Variables as Values 302
15.3 Type of an Expression 302
15.4 Expressions and Run-Time Checks 302
15.5 Normal and Abrupt Completion of Evaluation 304
15.6 Evaluation Order 305
15.6.1 Evaluate Left-Hand Operand First 305
15.6.2 Evaluate Operands before Operation 307
15.6.3 Evaluation Respects Parentheses and Precedence 308
15.6.4 Argument Lists are Evaluated Left-to-Right 309
15.6.5 Evaluation Order for Other Expressions 310
15.7 Primary Expressions 311
15.7.1 Literals 312
15.7.2 this 313
15.7.3 Parenthesized Expressions 313
15.8 Class Instance Creation Expressions 314
15.8.1 Run-time Evaluation of Class Instance Creation Expressions 314
15.8.2 Example: Evaluation Order and Out-of-Memory Detection 315
15.9 Array Creation Expressions 315
15.9.1 Run-time Evaluation of Array Creation Expressions 316
15.9.2 Example: Array Creation Evaluation Order 318
15.9.3 Example: Array Creation and Out-of-Memory Detection 319
15.10 Field Access Expressions 319
15.10.1 Field Access Using a Primary 320
15.10.2 Accessing Superclass Members using super 322
15.11 Method Invocation Expressions 323
15.11.1 Compile-Time Step 1: Determine Class or Interface to Search 324
15.11.2 Compile-Time Step 2: Determine Method Signature 325
15.11.2.1 Find Methods that are Applicable and Accessible 325
15.11.2.2 Choose the Most Specific Method 327
15.11.2.3 Example: Overloading Ambiguity 327
15.11.2.4 Example: Return Type Not Considered 328
15.11.2.5 Example: Compile-Time Resolution 329
15.11.3 Compile-Time Step 3: Is the Chosen Method Appropriate? 332
15.11.4 Runtime Evaluation of Method Invocation 333
15.11.4.1 Compute Target Reference (If Necessary) 333
15.11.4.2 Evaluate Arguments 334
15.11.4.3 Check Accessibility of Type and Method 334
15.11.4.4 Locate Method to Invoke 335
15.11.4.5 Create Frame, Synchronize, Transfer Control 336
15.11.4.6 Implementation Note: Combining Frames 337
15.11.4.7 Example: Target Reference and Static Methods 337
15.11.4.8 Example: Evaluation Order 338
15.11.4.9 Example: Overriding 338
15.11.4.10 Example: Method Invocation using super 340
15.12 Array Access Expressions 341
15.12.1 Runtime Evaluation of Array Access 341
15.12.2 Examples: Array Access Evaluation Order 342
15.13 Postfix Expressions 344
15.13.1 Names 344
15.13.2 Postfix Increment Operator ++ 345
15.13.3 Postfix Decrement Operator -- 345
15.14 Unary Operators 346
15.14.1 Prefix Increment Operator ++ 347
15.14.2 Prefix Decrement Operator -- 348
15.14.3 Unary Plus Operator + 348
15.14.4 Unary Minus Operator - 349
15.14.5 Bitwise Complement Operator ~ 349
15.14.6 Logical Complement Operator ! 349
15.15 Cast Expressions 350
15.16 Multiplicative Operators 351
15.16.1 Multiplication Operator * 351
15.16.2 Division Operator / 352
15.16.3 Remainder Operator % 353
15.17 Additive Operators 355
15.17.1 String Concatenation Operator + 355
15.17.1.1 String Conversion 355
15.17.1.2 Optimization of String Concatenation 356
15.17.1.3 Examples of String Concatenation 356
15.17.2 Additive Operators (+ and -) for Numeric Types 358
15.18 Shift Operators 359
15.19 Relational Operators 360
15.19.1 Numerical Comparison Operators <, <=, >, and >= 361
15.19.2 Type Comparison Operator instanceof 361
15.20 Equality Operators 362
15.20.1 Numerical Equality Operators == and != 363
15.20.2 Boolean Equality Operators == and != 364
15.20.3 Reference Equality Operators == and != 364
15.21 Bitwise and Logical Operators 365
15.21.1 Integer Bitwise Operators &, ^, and | 365
15.21.2 Boolean Logical Operators &, ^, and | 365
15.22 Conditional-And Operator && 366
15.23 Conditional-Or Operator || 366
15.24 Conditional Operator ? : 367
15.25 Assignment Operators 369
15.25.1 Simple Assignment Operator = 369
15.25.2 Compound Assignment Operators 374
15.26 Expression 381
15.27 Constant Expression 381

16 Definite Assignment 383

16.1 Definite Assignment and Expressions 386
16.1.1 Boolean Constant Expressions 386
16.1.2 Boolean-valued Expressions 386
16.1.3 The Boolean Operator && 386
16.1.4 The Boolean Operator || 387
16.1.5 The Boolean Operator ! 387
16.1.6 The Boolean Operator & 387
16.1.7 The Boolean Operator | 388
16.1.8 The Boolean Operator ^ 388
16.1.9 The Boolean Operator == 389
16.1.10 The Boolean Operator != 389
16.1.11 The Boolean Operator ? : 389
16.1.12 The Conditional Operator ? : 390
16.1.13 Boolean Assignment Expressions 390
16.1.14 Other Assignment Expressions 391
16.1.15 Operators ++ and -- 392
16.1.16 Other Expressions 392
16.2 Definite Assignment and Statements 393
16.2.1 Empty Statements 393
16.2.2 Blocks 393
16.2.3 Local Variable Declaration Statements 393
16.2.4 Labeled Statements 394
16.2.5 Expression Statements 394
16.2.6 if Statements 394
16.2.7 switch Statements 395
16.2.8 while Statements 395
16.2.9 do Statements 395
16.2.10 for Statements 396
16.2.10.1 Initialization Part 396
16.2.10.2 Incrementation Part 397
16.2.11 break, continue, return, and throw Statements 397
16.2.12 synchronized Statements 397
16.2.13 try Statements 398

17 Threads and Locks 399

17.1 Terminology and Framework 401
17.2 Execution Order 403
17.3 Rules about Variables 404
17.4 Nonatomic Treatment of double and long 405
17.5 Rules about Locks 406
17.6 Rules about the Interaction of Locks and Variables 407
17.7 Rules for Volatile Variables 407
17.8 Prescient Store Actions 408
17.9 Discussion 408
17.10 Example: Possible Swap 409
17.11 Example: Out-of-Order Writes 413
17.12 Threads 415
17.13 Locks and Synchronization 415
17.14 Wait Sets and Notification 416

18 Documentation Comments 419

18.1 The Text of a Documentation Comment 419
18.2 HTML in a Documentation Comment 420
18.3 Summary Sentence and General Description 420
18.4 Tagged Paragraphs 420
18.4.1 The @see Tag 421
18.4.2 The @author Tag 421
18.4.3 The @version Tag 422
18.4.4 The @param Tag 422
18.4.5 The @return Tag 422
18.4.6 The @exception Tag 422
18.5 Example 423

19 LALR(1) Grammar 433

19.1 Grammatical Difficulties 433
19.1.1 Problem #1: Names Too Specific 433
19.1.2 Problem #2: Modifiers Too Specific 435
19.1.3 Problem #3: Field Declaration versus Method Declaration 437
19.1.4 Problem #4: Array Type versus Array Access 438
19.1.5 Problem #5: Cast versus Parenthesized Expression 438
19.2 Productions from §2.3: The Syntactic Grammar 440
19.3 Productions from §3: Lexical Structure 440
19.4 Productions from §4: Types, Values, and Variables 440
19.5 Productions from §6: Names 441
19.6 Productions from §7: Packages 442
19.7 Productions Used Only in the LALR(1) Grammar 442
19.8 Productions from §8: Classes 443
19.8.1 Productions from §8.1: Class Declaration 443
19.8.2 Productions from §8.3: Field Declarations 443
19.8.3 Productions from §8.4: Method Declarations 444
19.8.4 Productions from §8.5: Static Initializers 444
19.8.5 Productions from §8.6: Constructor Declarations 445
19.9 Productions from §9: Interfaces 445
19.9.1 Productions from §9.1: Interface Declarations 445
19.10 Productions from §10: Arrays 446
19.11 Productions from §14: Blocks and Statements 446
19.12 Productions from §15: Expressions 450

20 The Package java.lang 455

20.1 The Class java.lang.Object 458
20.2 The Interface java.lang.Cloneable 465
20.3 The Class java.lang.Class 466
20.4 The Class java.lang.Boolean 469
20.5 The Class java.lang.Character 471
20.6 The Class java.lang.Number 487
20.7 The Class java.lang.Integer 488
20.8 The Class java.lang.Long 495
20.9 The Class java.lang.Float 503
20.10 The Class java.lang.Double 510
20.11 The Class java.lang.Math 517
20.12 The Class java.lang.String 531
20.13 The Class java.lang.StringBuffer 548
20.14 The Class java.lang.ClassLoader 558
20.15 The Class java.lang.Process 561
20.16 The Class java.lang.Runtime 563
20.17 The Class java.lang.SecurityManager 569
20.18 The Class java.lang.System 579
20.19 The Interface java.lang.Runnable 586
20.20 The Class java.lang.Thread 587
20.21 The Class java.lang.ThreadGroup 602
20.22 The Class java.lang.Throwable and its Subclasses 611
20.23 The Class java.lang.ExceptionInInitializerError 614

21 The Package java.util 615

21.1 The Interface java.util.Enumeration 617
21.2 The Class java.util.BitSet 618
21.3 The Class java.util.Date 622
21.4 The Class java.util.Dictionary 633
21.5 The Class java.util.Hashtable 635
21.6 The Class java.util.Properties 639
21.7 The Class java.util.Observable 643
21.8 The Interface java.util.Observer 645
21.9 The Class java.util.Random 646
21.10 The Class java.util.StringTokenizer 651
21.11 The Class java.util.Vector 654
21.12 The Class java.util.Stack 661
21.13 The Class java.util.EmptyStackException 663
21.14 The Class java.util.NoSuchElementException 664

22 The Package java.io 665

22.1 The Interface java.io.DataInput 667
22.2 The Interface java.io.DataOutput 674
22.3 The Class java.io.InputStream 680
22.4 The Class java.io.FileInputStream 684
22.5 The Class java.io.PipedInputStream 687
22.6 The Class java.io.ByteArrayInputStream 689
22.7 The Class java.io.StringBufferInputStream 692
22.8 The Class java.io.SequenceInputStream 694
22.9 The Class java.io.FilterInputStream 696
22.10 The Class java.io.BufferedInputStream 699
22.11 The Class java.io.DataInputStream 703
22.12 The Class java.io.LineNumberInputStream 707
22.13 The Class java.io.PushbackInputStream 710
22.14 The Class java.io.StreamTokenizer 712
22.15 The Class java.io.OutputStream 720
22.16 The Class java.io.FileOutputStream 722
22.17 The Class java.io.PipedOutputStream 725
22.18 The Class java.io.ByteArrayOutputStream 727
22.19 The Class java.io.FilterOutputStream 730
22.20 The Class java.io.BufferedOutputStream 732
22.21 The Class java.io.DataOutputStream 734
22.22 The Class java.io.PrintStream 738
22.23 The Class java.io.RandomAccessFile 743
22.24 The Class java.io.File 752
22.25 The Interface java.io.FilenameFilter 759
22.26 The Class java.io.FileDescriptor 760
22.27 The Class java.io.IOException 761
22.28 The Class java.io.EOFException 762
22.29 The Class java.io.FileNotFoundException 763
22.30 The Class java.io.InterruptedIOException 764
22.31 The Class java.io.UTFDataFormatException 765

Index 767


Contents | Prev | Next | Index

Java Language Specification (HTML generated by dkramer on August 01, 1996)
Copyright © 1996 Sun Microsystems, Inc. All rights reserved
Please send any comments or corrections to doug.kramer@sun.com