A Programmer’s Guide to Java ™ SCJP Certification A Comprehensive Primer Third Edition by khalid A. Mughal & Rolf W. Rasmussen. Note: this is java SE6.
Citation preview
1. A Programmers Guide toJava SCJP CertificationThird
Edition
2. This page intentionally left blank
3. A Programmers Guide toJava SCJP CertificationA Comprehensive
PrimerThird EditionKhalid A. MughalRolf W. RasmussenUpper Saddle
River, New Jersey Boston Indianapolis San FranciscoNew York Toronto
Montreal London Munich Paris MadridCapetown Sidney Tokyo Singapore
Mexico City
4. Many of the designations used by manufacturers and sellers
to distinguish their productsare claimed as trademarks. Where those
designations appear in this book, and the publisherwas aware of a
trademark claim, the designations have been printed with initial
capital let-ters or in all capitals.The authors and publisher have
taken care in the preparation of this book, but make noexpressed or
implied warranty of any kind and assume no responsibility for
errors or omis-sions. No liability is assumed for incidental or
consequential damages in connection with orarising out of the use
of the information or programs contained herein.The publisher
offers excellent discounts on this book when ordered in quantity
for bulk pur-chases or special sales, which may include electronic
versions and/or custom covers andcontent particular to your
business, training goals, marketing focus, and branding
interests.For more information, please contact: U.S. Corporate and
Government Sales (800) 382-3419 [email protected]
sales outside the United States please contact: International Sales
[email protected] us on the Web:
informit.com/awLibrary of Congress Cataloging-in-Publication
DataMughal, Khalid Azim. A programmers guide to Java SCJP
certification : a comprehensive primer / Khalid A.Mughal, Rolf W.
Rasmussen.3rd ed. p. cm. Previously published under title: A
programmers guide to Java certification. Includes bibliographical
references and index. ISBN 0-321-55605-4 (pbk. : alk. paper) 1.
Electronic data processing personnel--Certification. 2. Operating
systems (Comput-ers)Examinations--Study guides. 3. Java (Computer
program language)--Examinations--Study guides. I. Rasmussen, Rolf
(Rolf W.) II. Mughal, Khalid Azim. Programmers guideto Java
certification. III. Title. QA76.3.M846 2008 005.2762--dc22
2008048822Copyright 2009 Pearson Education, Inc.All rights
reserved. Printed in the United States of America. This publication
is protected bycopyright, and permission must be obtained from the
publisher prior to any prohibitedreproduction, storage in a
retrieval system, or transmission in any form or by any
means,electronic, mechanical, photocopying, recording, or likewise.
For information regardingpermissions, write to:ISBN-13:
978-0-321-55605-9ISBN-10: 0-321-55605-4Text printed in the United
States on recycled paper at Courier in Stoughton,
Massachusetts.First printing, December 2008
5. To the loving memory of my mother, Zubaida Begum, and my
father, Mohammed Azim. K.A.M. For Olivia E. Rasmussen and Louise J.
Dahlmo. R.W.R.
6. This page intentionally left blank
7. Contents Overview Foreword xxxv Preface xxxvii 1 Basics of
Java Programming 1 2 Language 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 38910 Fundamental Classes 42311 Files and
Streams 46712 Localization, Pattern Matching and Formatting 53113
Threads 61314 Generics 661 vii
8. viii CONTENTS 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
9. Contents List of Figures xxiii List of Tables xxvii List of
Examples xxix Foreword xxxv Preface xxxvii1 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
10. x CONTENTS 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
11. CONTENTS xi 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
12. xii CONTENTS 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
13. CONTENTS xiii 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
14. xiv CONTENTS 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
15. CONTENTS xv 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
16. xvi CONTENTS 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 10.1 Overview of the
java.lang Package 424 10.2 The Object Class 424 Review Questions
428 10.3 The Wrapper Classes 428 Common Wrapper Class Constructors
429 Common Wrapper Class Utility Methods 430 Numeric Wrapper
Classes 433 The Character Class 436 The Boolean Class 437 Review
Questions 437 10.4 The String Class 439 Immutability 439 Creating
and Initializing Strings 439 The CharSequence Interface 442 Reading
Characters from a String 443 Comparing Strings 445 Character Case
in a String 446 Concatenation of Strings 446 Searching for
Characters and Substrings 448 Extracting Substrings 449 Converting
Primitive Values and Objects to Strings 450
17. CONTENTS xvii Formatting Values 450 Pattern Matching 452
Review Questions 452 10.5 The StringBuilder and the StringBuffer
Classes 456 Thread-Safety 456 Mutability 456 Constructing String
Builders 457 Reading and Changing Characters in String Builders 457
Constructing Strings from String Builders 458 Appending, Inserting,
and Deleting Characters in String Builders 458 Controlling String
Builder Capacity 460 Review Questions 461 Chapter Summary 464
Programming Exercises 465 11 Files and Streams 467 11.1 Input and
Output 468 11.2 The File Class 468 Querying the File System 470
File or Directory Existence 472 File and Directory Permissions 472
Listing Directory Entries 473 Creating New Files and Directories
473 Renaming Files and Directories 474 Deleting Files and
Directories 474 11.3 Byte Streams: Input Streams and Output Streams
475 File Streams 477 Filter Streams 479 Reading and Writing Binary
Values 479 Review Questions 484 11.4 Character Streams: Readers and
Writers 488 Print Writers 490 Writing Text Files 492 Reading Text
Files 494 Using Buffered Writers 495 Using Buffered Readers 496 The
Standard Input, Output, and Error Streams 499 Comparison of Byte
Streams and Character Streams 500 11.5 The Console class 500 Review
Questions 506 11.6 Object Serialization 510 The ObjectOutputStream
Class 511 The ObjectInputStream Class 512 Customizing Object
Serialization 517 Serialization and Inheritance 519
18. xviii CONTENTS Review Questions 522 Chapter Summary 529
Programming Exercise 530 12 Localization, Pattern Matching, and
Formatting 531 12.1 The java.util.Locale Class 532 12.2 The
java.util.Date Class 535 12.3 The java.util.Calendar Class 536
Static Factory Methods to Create a Calendar 537 Interoperability
with the Date Class 537 Selected get and set Methods 537
Manipulating a Calendar 539 Comparing Calendars 540 12.4 The
java.text.DateFormat Class 541 Static Factory Methods to Create a
Date/Time Formatter 541 Formatting Dates 542 Parsing Strings to
Date/Time 543 Managing the Calendar and the Number Formatter 545
12.5 The java.text.NumberFormat Class 546 Static Factory Methods to
Create a Number Formatter 546 Formatting Numbers and Currency 546
Parsing Strings to Numbers 547 Specifying the Number of Digits 547
Review Questions 551 12.6 String Pattern Matching Using Regular
Expressions 554 Regular Expression Fundamentals 554 Escaping
Metacharacters 561 The java.util.regex.Pattern Class 562 The
java.util.regex.Matcher Class 566 The java.util.Scanner Class 571
Review Questions 582 12.7 Formatting Values 593 Overview 593
Defining Format Specifiers 595 Conversion Categories and Formatting
Conversions 597 Selected Format Exceptions 601 Using the format()
Method 602 Review Questions 604 Chapter Summary 610 Programming
Exercises 610 13 Threads 613 13.1 Multitasking 614 13.2 Overview of
Threads 614 13.3 The Main Thread 615
19. CONTENTS xix 13.4 Thread Creation 615 Implementing the
Runnable Interface 616 Extending the Thread Class 619 Review
Questions 622 13.5 Synchronization 626 Locks 626 Synchronized
Methods 627 Synchronized Blocks 629 Review Questions 631 13.6
Thread Transitions 634 Thread States 634 Thread Priorities 638
Thread Scheduler 638 Running and Yielding 639 Sleeping and Waking
Up 640 Waiting and Notifying 640 Joining 647 Blocking for I/O 649
Thread Termination 650 Deadlocks 651 Review Questions 653 Chapter
Summary 658 Programming Exercises 659 14 Generics 661 14.1
Introducing Generics 662 14.2 Generic Types and Parameterized Types
663 Generic Types 663 Parameterized Types 665 Generic Interfaces
666 Extending Generic Types 668 Raw Types and Unchecked Warnings
670 14.3 Collections and Generics 672 14.4 Wildcards 673 The
Subtype Covariance Problem with Parameterized Types 673 Wildcard
Types 675 Subtype Covariance: ? extends Type 675 Subtype
Contravariance: ? super Type 676 Subtype Bivariance: ? 677 Subtype
Invariance: Type 677 Some Restrictions on Wildcard Types 677 14.5
Using References of Wildcard Parameterized Types 678 Generic
Reference Assignment 679 Using Parameterized References to Call Set
and Get Methods 680 14.6 Bounded Type Parameters 684 Multiple
Bounds 686
20. xx CONTENTS Review Questions 686 14.7 Implementing a
Simplified Generic Stack 695 14.8 Generic Methods and Constructors
697 Generic Method Declaration 699 Calling Generic Methods 700 14.9
Wildcard Capture 703 Capture Conversion 705 14.10 Flexibility with
Wildcard Parameterized Types 705 Nested Wildcards 705 Wildcard
Parameterized Types as Formal Parameters 707 Flexible Comparisons
with Wildcards 709 Recursive Bounds 712 14.11 Type Erasure 714
Bridge Methods 716 14.12 Implications for Overloading and
Overriding 716 Method Signature 716 Implications for Overloading
717 Implications for Overriding 718 14.13 Limitations and
Restrictions on Generic Types 722 Reifiable Types 722 Implications
for instanceof operator 723 Implications for Casting 724
Implications for Arrays 726 Implications for Varargs 729
Implications for Exception Handling 730 Implications for Nested
Classes 731 Other Implications 733 Review Questions 734 Chapter
Summary 744 Programming Exercises 745 15 Collections and Maps 747
15.1 Comparing Objects 748 The equals() Method 751 The hashCode()
Method 760 The Comparable Interface 765 The Comparator Interface
771 Review Questions 775 15.2 The Java Collections Framework 777
Core Interfaces 778 Implementations 780 15.3 Collections 784 Basic
Operations 784 Bulk Operations 785 Iterators 785
21. CONTENTS xxi Array Operations 790 Review Questions 791 15.4
Sets 796 The HashSet and LinkedHashSet Classes 796 15.5 The
SortedSet and NavigableSet Interfaces 800 The SortedSet Interface
800 The NavigableSet Interface 801 The TreeSet Class 802 15.6 Lists
804 The ArrayList, LinkedList, and Vector Classes 806 15.7 Queues
809 The Queue Interface 809 The PriorityQueue and LinkedList
Classes 810 The Deque Interface 813 The ArrayDeque and LinkedList
Class 815 Review Questions 816 15.8 Maps 821 Basic Operations 821
Bulk Operations 822 Collection Views 822 15.9 Map Implementations
823 The HashMap, LinkedHashMap, and Hashtable Classes 823 15.10 The
SortedMap and NavigableMap Interfaces 826 The SortedMap Interface
826 The NavigableMap Interface 827 The TreeMap Class 828 Review
Questions 833 15.11 Working with Collections 838 Ordering Elements
in Lists 838 Searching in Collections 840 Changing Elements in
Collections 841 Sorting Arrays 842 Searching in Arrays 843 Creating
List Views of Arrays 845 Miscellaneous Utility Methods in the
Arrays Class 846 Review Questions 846 Chapter Summary 849
Programming Exercises 850 A Taking the SCJP 1.6 Exam 851 A.1
Preparing for the Programmer Exam 851 A.2 Registering for the Exam
852 Obtaining an Exam Voucher 852 Signing Up for the Test 852
Contact Information 852
22. xxii CONTENTS After Taking the Exam 853 A.3 How the
Examination Is Conducted 853 The Testing Locations 853 Utilizing
the Allotted Time 853 The Exam Program 854 A.4 The Questions 854
Types of Questions Asked 854 Types of Answers Expected 855 Topics
Covered by the Questions 855 A.5 Moving on to Other Java Technology
Exams 856 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 G.1 Number
Systems 1005 Binary, Octal, and Hexadecimal Number System 1005
Converting Binary Numbers to Decimals 1006 Converting Octal and
Hexadecimal Numbers to Decimals 1007 G.2 Relationship between
Binary, Octal, and Hexadecimal Numbers 1007 G.3 Converting Decimals
1008 Converting Decimals to Binary Numbers 1008 Converting Decimals
to Octal and Hexadecimal Numbers 1009 G.4 Representing Integers
1010 Calculating 2s Complement 1011 Index 1013
23. List of Figures 1.1 UML Notation for Classes Chapter 1 1 3
1.2 UML Notation for Objects 5 1.3 Aliases 6 1.4 Class Diagram
Showing Static Members of a Class 8 1.5 Members of a Class 9 1.6
Class Diagram Depicting Inheritance Relationship 10 1.7 Class
Diagram Depicting Aggregation 12 2.1 Primitive Data Types in Java
Chapter 2 19 28 3.1 The Event Model Chapter 3 39 43 3.2 Array of
Arrays 78 3.3 Parameter Passing: Primitive Data Values 84 3.4
Parameter Passing: Reference Values 85 3.5 Parameter Passing:
Arrays 87 4.1 Java Source File Structure Chapter 4 103 104 4.2
Package Hierarchy 105 4.3 File Hierarchy 116 4.4 Searching for
Classes 118 4.5 Searching in JAR files 121 4.6 Block Scope 132 4.7
Public Accessibility 141 4.8 Protected Accessibility 142 4.9
Default Accessibility 1434.10 Private Accessibility 144 5.1
Widening Primitive Conversions Chapter 5 159 160 5.2 Overflow and
Underflow in Floating-point Arithmetic 176 5.3 Numeric Promotion in
Arithmetic Expressions 181 6.1 Activity 203 Chapter 6 Diagram for
if Statements 205 6.2 Activity Diagram for a switch Statement 208
6.3 Activity Diagram for the while Statement 217 6.4 Activity
Diagram for the do-while Statement 218 6.5 Activity Diagram for the
for Statement 219 6.6 Enhanced for Statement 221 6.7 Method
Execution 237 xxiii
24. xxiv LIST OF FIGURES 6.8 Exception Propagation 238 6.9
Partial Exception Inheritance Hierarchy 240 6.10 The
try-catch-finally Construct 246 6.11 Exception Handling (Scenario
1) 248 6.12 Exception Handling (Scenario 2) 249 6.13 Exception
Handling (Scenario 3) 250 6.14 Execution of the Simple assert
Statement (with Assertions Enabled) 266 6.15 Package Hierarchy 271
7.1 Inheritance Hierarchy Chapter 7 283 287 7.2 Inheritance
Relations 314 7.3 Reference Type Hierarchy: Arrays and Subtype
Covariance 318 7.4 Type Hierarchy to Illustrate Polymorphism 340
7.5 Implementing Data Structures by Inheritance and Aggregation 342
8.1 Static Member Classes and Interfaces Chapter 8 351 358 8.2
Outer Object with Associated Inner Objects 362 8.3 Nested Classes
and Inheritance 366 8.4 Local Classes and Inheritance Hierarchy 374
9.1 Memory389 Chapter 9 Organization at Runtime 392 10.1 Partial10
423 Chapter Inheritance Hierarchy in the java.lang Package 424 10.2
Converting Values Between Primitive, Wrapper, and String Types 429
11.1 Partial11 467 Chapter Byte Stream Inheritance Hierarchies 476
11.2 Stream Chaining for Reading and Writing Binary Values to a
File 481 11.3 Partial Character Stream Inheritance Hierarchies 489
11.4 Setting up a PrintWriter to Write to a File 493 11.5 Setting
up Readers to read Characters 494 11.6 Buffered Writers 496 11.7
Buffered Readers 497 11.8 Keyboard and Display as Console 501 11.9
Object Stream Chaining 511 13.1 Spawning Threads Using a Runnable
Object Chapter 12 531 13 613 616 13.2 Spawning ThreadsExtending the
Thread Class 620 13.3 Thread States 635 13.4 Running and Yielding
639 13.5 Sleeping and Waking up 640 13.6 Waiting and Notifying 641
13.7 Thread Communication 642 13.8 Stack Users 643 13.9 Joining of
Threads 648 13.10 Deadlock 652 14.1 Extending Generic Types Chapter
14 661 668 14.2 No Subtype Covariance for Parameterized Types 674
14.4 Partial Type Hierarchy for Node