Chapter 1
1.1 Basic Elements of a Class Definition
1.2 Static Members in Class Definition
1.3 Defining a Subclass
1.4 An Application
Chapter 2
2.1 Default Values for Fields
2.2 Flagging Uninitialized Local Variables of Primitive Data Types
2.3 Flagging Uninitialized Local Reference Variables
Chapter 3
3.1 Numeric Promotion in Arithmetic Expressions
3.2 Bitwise Operations
3.3 Passing Primitive Values
3.4 Passing Object Reference Values
3.5 Passing Arrays
3.6 Array Elements as Primitive Data Values
3.7 Array Elements as Object Reference Values
3.8 Passing Program Arguments
Chapter 4
4.1 Using Arrays
4.2 Using Anonymous Arrays
4.3 Using Multidimensional Arrays
4.4 Using this Reference
4.5 Namespaces
4.6 Class Scope
4.7 Accessibility Modifiers for Classes and Interfaces
4.8 Abstract Classes
4.9 Public Accessibility of Members
4.10 Accessing Static Members
4.11 Accessing Final Members
4.12 Synchronized Methods
Chapter 5
5.1 Fall Through in switch Statement
5.2 Using break in switch Statement
5.3 Nested switch Statement
5.4 break Statement
5.5 Labeled break Statement
5.6 continue Statement
5.7 Labeled continue Statement
5.8 The return Statement
5.9 Method Execution
5.10 try-catch Construct
5.11 Exception Propagation
5.12 try-catch-finally Construct
5.13 try-finally Construct
5.14 finally Block and the return Statement>
5.15 Throwing Exceptions
5.16 throws Clause
5.17 Assertions
Chapter 6
6.1 Extending Classes: Inheritance and Accessibility
6.2 Illustrating Inheritance
6.3 Overriding, Overloading, and Hiding
6.4 Overloaded Method Resolution
6.5 Using super Keyword
6.6 Constructor Overloading
6.7 this() Constructor Call
6.8 super() Constructor Call
6.9 Interfaces
6.10 Variables in Interfaces
6.11 Assigning and Passing Reference Values
6.12 instanceof and Cast Operator
6.13 Using instanceof Operator
6.14 Polymorphism and Dynamic Method Lookup
6.15 Implementing Data Structures by Inheritance and Aggregation
Chapter 7
7.1 Overview of Nested Classes and Interfaces
7.2 Static Member Classes and Interfaces
7.3 Importing Member Classes
7.4 Accessing Members in Enclosing Context
7.5 Defining Non-static Member Classes
7.6 Special Form of this and new Constructs in Non-static Member Classes
7.7 Inheritance Hierarchy and Enclosing Context
7.8 Extending Inner Classes
7.9 Access in Enclosing Context
7.10 Instantiating Local Classes
7.11 Defining Anonymous Classes
7.12 Accessing Declarations in Enclosing Context
Chapter 8
8.1 Garbage Collection Eligibility
8.2 Using Finalizers
8.3 Invoking Garbage Collection
8.4 Initializer Expression Order and Method Calls
8.5 Exceptions in Initializer Expressions
8.6 Static Initializers and Forward References
8.7 Static Initializer Blocks and Exceptions
8.8 Instance Initializers and Forward References
8.9 Instance Initializer Block in Anonymous Class
8.10 Exception Handling in Instance Initializer Blocks
8.11 Object State Construction
8.12 Initialization under Object State Construction
Chapter 9
9.1 Implementing the Runnable Interface
9.2 Extending the Thread Class
9.3 Mutual Exclusion
9.4 Waiting and Notifying
9.5 Joining of Threads
9.6 Thread Termination
9.7 Deadlock
Chapter 10
10.1 Methods in the Object class
10.2 String Representation of Integers
10.3 String Construction and Equality
10.4 Reading Characters from a String
Chapter 11
11.1 Using an Iterator
11.2 Using Sets
11.3 Using Lists
11.4 Using Maps
11.5 Natural Order and Total Order
11.6 Using SortedMaps
11.7 A Simple Class for Version Number
11.8 Implications of Not Overriding the equals() Method
11.9 Implementing the equals() Method
11.10 Implications of Overriding the equals() Method
11.11 Implementing the hashCode() Method
11.12 Implications of Overriding the hashCode() Method
11.13 Implementing the compareTo() Method of the Comparable Interface
11.14 Implications of Implementing the compareTo() Method