1089

Programmers guide to java scjp certification a comprehensive primer (3rd edition), a khalid mughal

Embed Size (px)

DESCRIPTION

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