A Programmer’s Guide to Java™ SCJP Certification
Third EditionForeword xxxv
Preface xxxvii
1 Basics of Java Programming 1
2 Language
... [Show More] Fundamentals 19
3 Declarations 39
4 Access Control 103
5 Operators and Expressions 159
6 Control Flow 203
7 Object-Oriented Programming 283
8 Nested Type Declarations 351
9 Object Lifetime 389
10 Fundamental Classes 423
11 Files and Streams 467
12 Localization, Pattern Matching and Formatting 531
13 Threads 613
14 Generics 661
vii
15 Collections and Maps 747
A Taking the SCJP 1.6 Exam 851
B Objectives for the SCJP 1.6 Exam 857
C Objectives for the SCJP 1.6 Upgrade Exam 863
D Annotated Answers to Review Questions 869
E Solutions to Programming Exercises 935
F Mock Exam 959
G Number Systems and Number Representation 1005
Index 1013
List of Figures xxiii
List of Tables xxvii
List of Examples xxix
Foreword xxxv
Preface xxxvii
1 Basics of Java Programming 1
1.1 Introduction
2
1.2 Classes
2
Declaring Members: Fields and Methods
3
1.3 Objects
4
Class Instantiation, Reference Values, and References
4
Object Aliases
6
1.4 Instance Members
6
Invoking Methods
7
1.5 Static Members
7
1.6 Inheritance
10
1.7 Aggregation
12
1.8 Tenets of Java
13
Review Questions
13
1.9 Java Programs
15
1.10 Sample Java Application
15
Essential Elements of a Java Application
15
Compiling and Running an Application
16
Review Questions
17
Chapter Summary
18
Programming Exercise
18
ix
2 Language Fundamentals 19
2.1 Basic Language Elements 20
Lexical Tokens 20
Identifiers 20
Keywords 20
Literals 21
Integer Literals 22
Floating-Point Literals 22
Boolean Literals 23
Character Literals 23
String Literals 25
White Spaces 25
Comments 26
Review Questions 27
2.2 Primitive Data Types 28
Integer Types 28
The char Type 29
The Floating-Point Types 29
The boolean Type 30
Review Questions 31
2.3 Variable Declarations 31
Declaring and Initializing Variables 31
Reference Variables 32
2.4 Initial Values for Variables 33
Default Values for Fields 33
Initializing Local Variables of Primitive Data Types 34
Initializing Local Reference Variables 35
Lifetime of Variables 35
Review Questions 36
Chapter Summary 37
Programming Exercise 37
3 Declarations 39
3.1 Class Declarations 40
3.2 JavaBeans Standard 41
Naming Patterns for Properties 41
Naming Patterns for the Event Model 42
3.3 Method Declarations 44
Statements 45
Instance Methods and the Object Reference this 45
Method Overloading 47
3.4 Constructors 48
The Default Constructor 49
Overloaded Constructors 51
Review Questions 52
3.5 Enumerated Types 54
Declaring Typesafe Enums 54
Using Typesafe Enums 54
Declaring Enum Constructors and Members 55
Implicit Static Methods for Enum Types 57
Inherited Methods from the Enum Class 58
Extending Enum Types: Constant-Specific Class Bodies 59
Declaring Typesafe Enums Revisited 62
Review Questions 63
3.6 Arrays 69
Declaring Array Variables 70
Constructing an Array 70
Initializing an Array 71
Using an Array 72
Anonymous Arrays 74
Multidimensional Arrays 75
Review Questions 79
3.7 Parameter Passing 81
Passing Primitive Data Values 82
Passing Reference Values 84
Passing Arrays 86
Array Elements as Actual Parameters 87
final Parameters 89
3.8 Variable Arity Methods 90
Calling a Varargs Method 91
Varargs and Non-Varargs Method Calls 93
3.9 The main() Method 94
Program Arguments 95
Review Questions 96
Chapter Summary 100
Programming Exercises 101
4 Access Control 103
4.1 Java Source File Structure 104
4.2 Packages 105
Defining Packages 106
Using Packages 107
Compiling Code into Packages 115
Running Code from Packages 117
4.3 Searching for Classes 117
4.4 The JAR Utility 120
4.5 System Properties 122
Review Questions 123
4.6 Scope Rules 129
Class Scope for Members 129
Block Scope for Local Variables 131
4.7 Accessibility Modifiers for Top-Level Type Declarations 132
4.8 Other Modifiers for Classes 135
abstract Classes 135
final Classes 136
Review Questions 138
4.9 Member Accessibility Modifiers 138
public Members 139
protected Members 141
Default Accessibility for Members 142
private Members 143
Review Questions 144
4.10 Other Modifiers for Members 146
static Members 147
final Members 148
abstract Methods 150
synchronized Methods 150
native Methods 151
transient Fields 152
volatile Fields 153
Review Questions 154
Chapter Summary 157
Programming Exercise 157
5 Operators and Expressions 159
5.1 Conversions 160
Widening and Narrowing Primitive Conversions 160
Widening and Narrowing Reference Conversions 161
Boxing and Unboxing Conversions 162
Other Conversions 162
5.2 Type Conversion Contexts 163
Assignment Context 164
Method Invocation Context 164
Casting Context of the Unary Type Cast Operator: (type) 164
Numeric Promotion Context 165
5.3 Precedence and Associativity Rules for Operators 166
5.4 Evaluation Order of Operands 168
Left-Hand Operand Evaluation First 168
Operand Evaluation before Operation Execution 168
Left to Right Evaluation of Argument Lists 169
5.5 The Simple Assignment Operator = 169
Assigning Primitive Values 169
Assigning References 169
Multiple Assignments 170
Type Conversions in Assignment Context 171
Review Questions 173
5.6 Arithmetic Operators: *, /, %, +, - 174
Arithmetic Operator Precedence and Associativity 174
Evaluation Order in Arithmetic Expressions 174
Range of Numeric Values 175
Unary Arithmetic Operators: -, + 177
Multiplicative Binary Operators: *, /, % 178
Additive Binary Operators: +, - 180
Numeric Promotions in Arithmetic Expressions 180
Arithmetic Compound Assignment Operators: *=, /=, %=, +=, -= 182
Review Questions 184
5.7 The Binary String Concatenation Operator + 185
5.8 Variable Increment and Decrement Operators: ++, -- 186
The Increment Operator ++ 187
The Decrement Operator -- 187
Review Questions 188
5.9 Boolean Expressions 190
5.10 Relational Operators: <, <=, >, >= 190
5.11 Equality 191
Primitive Data Value Equality: ==, != 191
Object Reference Equality: ==, != 192
Object Value Equality 193
5.12 Boolean Logical Operators: !, ^, &, | 194
Operand Evaluation for Boolean Logical Operators 195
Boolean Logical Compound Assignment Operators: &=, ^=, |= 195
5.13 Conditional Operators: &&, || 196
Short-Circuit Evaluation 197
Review Questions 199
5.14 The Conditional Operator: ?: 201
5.15 Other Operators: new, [], instanceof 201
Chapter Summary 202
Programming Exercise 202
6 Control Flow 203
6.1 Overview of Control Flow Statements 204
6.2 Selection Statements 204
The Simple if Statement 204
The if-else Statement 205
The switch Statement 207
Review Questions 212
6.3 Iteration Statements 216
The while Statement 217
The do-while Statement 217
The for(;;) Statement 218
The for(:) Statement 220
6.4 Transfer Statements 223
Labeled Statements 223
The break Statement 224
The continue Statement 226
The return Statement 228
Review Questions 229
6.5 Stack-Based Execution and Exception Propagation 235
6.6 Exception Types 239
The Exception Class 241
The RuntimeException Class 241
The Error Class 242
Checked and Unchecked Exceptions 243
Defining New Exceptions 244
6.7 Exception Handling: try, catch, and finally 245
The try Block 245
The catch Block 246
The finally Block 251
6.8 The throw Statement 255
6.9 The throws Clause 257
Review Questions 260
6.10 Assertions 265
The assert Statement and the AssertionError Class 265
Compiling Assertions 267
Runtime Enabling and Disabling of Assertions 269
Using Assertions 272
Review Questions 276
Chapter Summary 279
Programming Exercises 279
7 Object-Oriented Programming 283
7.1 Single Implementation Inheritance 284
Inheritance Hierarchy 286
Relationships: is-a and has-a 286
The Supertype-Subtype Relationship 287
7.2 Overriding Methods 288
Instance Method Overriding 288
Covariant return in Overriding Methods 290
Overriding vs. Overloading 292
7.3 Hiding Members 294
Field Hiding 294
Static Method Hiding 294
7.4 The Object Reference super 295
Review Questions 297
7.5 Chaining Constructors Using this() and super() 302
The this() Constructor Call 302
The super() Constructor Call 305
Review Questions 308
7.6 Interfaces 309
Defining Interfaces 310
Abstract Method Declarations 310
Implementing Interfaces 312
Extending Interfaces 313
Interface References 314
Constants in Interfaces 314
Review Questions 315
7.7 Arrays and Subtyping 317
Arrays and Subtype Covariance 317
Array Store Check 319
7.8 Reference Values and Conversions 319
7.9 Reference Value Assignment Conversions 320
7.10 Method Invocation Conversions Involving References 323
Overloaded Method Resolution 324
7.11 Reference Casting and the instanceof Operator 327
The Cast Operator 327
The instanceof Operator 328
Review Questions 332
7.12 Polymorphism and Dynamic Method Lookup 340
7.13 Inheritance Versus Aggregation 342
7.14 Basic Concepts in Object-Oriented Design 345
Encapsulation 345
Cohesion 346
Coupling 346
Review Questions 347
Chapter Summary 349
Programming Exercises 349
8 Nested Type Declarations 351
8.1 Overview of Nested Type Declarations 352
8.2 Static Member Types 355
Declaring and Using Static Member Types 355
Accessing Members in Enclosing Context 357
8.3 Non-Static Member Classes 359
Instantiating Non-Static Member Classes 360
Accessing Members in Enclosing Context 362
Review Questions 367
8.4 Local Classes 371
Accessing Declarations in Enclosing Context 372
Instantiating Local Classes 374
8.5 Anonymous Classes 377
Extending an Existing Class 377
Implementing an Interface 379
Instantiating Anonymous Classes 380
Accessing Declarations in Enclosing Context 380
Review Questions 382
Chapter Summary 386
Programming Exercise 386
9 Object Lifetime 389
9.1 Garbage Collection 390
9.2 Reachable Objects 390
9.3 Facilitating Garbage Collection 392
9.4 Object Finalization 396
9.5 Finalizer Chaining 397
9.6 Invoking Garbage Collection Programmatically 398
Review Questions 401
9.7 Initializers 406
9.8 Field Initializer Expressions 406
9.9 Static Initializer Blocks 410
9.10 Instance Initializer Blocks 413
9.11 Constructing Initial Object State 416
Review Questions 420
Chapter Summary 422
10 Fundamental Classes 423 [Show Less]