• No results found

A Programmer’s Guide to Java™ SCJP Certification

N/A
N/A
Protected

Academic year: 2021

Share "A Programmer’s Guide to Java™ SCJP Certification"

Copied!
1089
0
0

Loading.... (view fulltext now)

Full text

(1)
(2)

A Programmer’s Guide to Java SCJP Certification

Third Edition

(3)

This page intentionally left blank

(4)

A Programmer’s Guide to Java SCJP Certification

A Comprehensive Primer

Third Edition

Khalid A. Mughal Rolf W. Rasmussen

Upper Saddle River, New Jersey • Boston • Indianapolis • San Francisco New York • Toronto • Montreal • London • Munich • Paris • Madrid Capetown • Sidney • Tokyo • Singapore • Mexico City

(5)

Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and the publisher was 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 no expressed 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 or arising 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 and content 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]

For sales outside the United States please contact:

International Sales

[email protected] Visit us on the Web: informit.com/aw

Library of Congress Cataloging-in-Publication Data Mughal, Khalid Azim.

A programmer's guide to Java SCJP certification : a comprehensive primer / Khalid A.

Mughal, Rolf W. Rasmussen.—3rd ed.

p. cm.

Previously published under title: A programmer’s 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. Programmer’s guide to Java certification. III. Title.

QA76.3.M846 2008

005.2'762--dc22 2008048822 Copyright © 2009 Pearson Education, Inc.

All rights reserved. Printed in the United States of America. This publication is protected by copyright, and permission must be obtained from the publisher prior to any prohibited reproduction, storage in a retrieval system, or transmission in any form or by any means, electronic, mechanical, photocopying, recording, or likewise. For information regarding permissions, write to:

ISBN-13: 978-0-321-55605-9 ISBN-10: 0-321-55605-4

Text printed in the United States on recycled paper at Courier in Stoughton, Massachusetts.

First printing, December 2008

(6)

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.

(7)

This page intentionally left blank

(8)

vii

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 389

10 Fundamental Classes 423

11 Files and Streams 467

12 Localization, Pattern Matching and Formatting 531

13 Threads 613

14 Generics 661

(9)

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

(10)

ix

Contents

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

(11)

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

Thechar Type 29

The Floating-Point Types 29

Theboolean 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

(12)

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

(13)

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

(14)

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

Theif-else Statement 205

Theswitch Statement 207

Review Questions 212

6.3 Iteration Statements 216

Thewhile Statement 217

Thedo-while Statement 217

Thefor(;;) Statement 218

Thefor(:) Statement 220

(15)

6.4 Transfer Statements 223

Labeled Statements 223

Thebreak Statement 224

Thecontinue Statement 226

Thereturn Statement 228

Review Questions 229

6.5 Stack-Based Execution and Exception Propagation 235

6.6 Exception Types 239

TheException Class 241

TheRuntimeException Class 241

TheError Class 242

Checked and Unchecked Exceptions 243

Defining New Exceptions 244

6.7 Exception Handling: try,catch, and finally 245

Thetry Block 245

Thecatch Block 246

Thefinally Block 251

6.8 The throw Statement 255

6.9 The throws Clause 257

Review Questions 260

6.10 Assertions 265

Theassert 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

Covariantreturn 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

Thethis() Constructor Call 302

(16)

CONTENTS xv

Thesuper() 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

Theinstanceof 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

(17)

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

TheCharacter Class 436

TheBoolean Class 437

Review Questions 437

10.4 The String Class 439

Immutability 439

Creating and Initializing Strings 439

TheCharSequence 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

(18)

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

TheObjectOutputStream Class 511

TheObjectInputStream Class 512

Customizing Object Serialization 517

Serialization and Inheritance 519

(19)

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

Thejava.util.regex.Pattern Class 562

Thejava.util.regex.Matcher Class 566

Thejava.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

(20)

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

(21)

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

Theequals() Method 751

ThehashCode() Method 760

TheComparable<E> Interface 765

TheComparator<E> 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

(22)

CONTENTS xxi

Array Operations 790

Review Questions 791

15.4 Sets 796

TheHashSet<E> and LinkedHashSet<E> Classes 796 15.5 The SortedSet<E> and NavigableSet<E> Interfaces 800

TheSortedSet<E> Interface 800

TheNavigableSet<E> Interface 801

TheTreeSet<E> Class 802

15.6 Lists 804

TheArrayList<E>,LinkedList<E>, and Vector<E> Classes 806

15.7 Queues 809

TheQueue<E> Interface 809

ThePriorityQueue<E> and LinkedList<E> Classes 810

TheDeque<E> Interface 813

TheArrayDeque<E> and LinkedList<E> Class 815

Review Questions 816

15.8 Maps 821

Basic Operations 821

Bulk Operations 822

Collection Views 822

15.9 Map Implementations 823

TheHashMap<K,V>,LinkedHashMap<K,V>, and Hashtable<K,V> Classes 823 15.10 The SortedMap<K,V> and NavigableMap<K,V> Interfaces 826

TheSortedMap<K,V> Interface 826

TheNavigableMap<K,V> Interface 827

TheTreeMap<K,V> 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

(23)

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 2’s Complement 1011

Index 1013

(24)

xxiii

List of Figures

Chapter 1 1

1.1 UML Notation for Classes 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

Chapter 2 19

2.1 Primitive Data Types in Java 28

Chapter 3 39

3.1 The Event Model 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

Chapter 4 103

4.1 Java Source File Structure 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 143

4.10 Private Accessibility 144

Chapter 5 159

5.1 Widening Primitive Conversions 160

5.2 Overflow and Underflow in Floating-point Arithmetic 176

5.3 Numeric Promotion in Arithmetic Expressions 181

Chapter 6 203

6.1 Activity 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

(25)

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

Chapter 7 283

7.1 Inheritance Hierarchy 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 Chapter 8 351

8.1 Static Member Classes and Interfaces 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

Chapter 9 389

9.1 Memory Organization at Runtime 392

Chapter 10 423

10.1 Partial Inheritance Hierarchy in the java.lang Package 424 10.2 Converting Values Between Primitive, Wrapper, and String Types 429

Chapter 11 467

11.1 Partial 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

Chapter 12 531 Chapter 13 613

13.1 Spawning Threads Using a Runnable Object 616

13.2 Spawning Threads—Extending 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

Chapter 14 661

14.1 Extending Generic Types 668

14.2 No Subtype Covariance for Parameterized Types 674 14.4 Partial Type Hierarchy for Node<? super Integer> 676 14.3 Partial Type Hierarchy for Node<? extends Number> 676 14.5 Partial Type Hierarchy for Selected Parameterized Types of Node<E> 678

14.6 Flexible Comparisons with Wildcards 709

Chapter 15 747

15.1 The Core Interfaces 778

(26)

LIST OF FIGURES XXV

15.2 The Core Collection Interfaces and Their Implementations 781 15.3 The Core Map Interfaces and Their Implementations 782

15.4 Bulk Operations on Collections 785

G.1 Converting between Binary, Octal, and Hexadecimal 1008

(27)

This page intentionally left blank

(28)

xxvii

List of Tables

Chapter 1 11.1 Terminology for Class Members 10

Chapter 2 192.1 Keywords in Java 21

2.2 Reserved Literals in Java 21

2.3 Reserved Keywords not Currently in Use 21

2.4 Examples of Literals 21

2.5 Examples of Decimal, Octal, and Hexadecimal Literals 22

2.6 Examples of Character Literals 23

2.7 Escape Sequences 24

2.8 Examples of Escape Sequence \ddd 25

2.9 Range of Integer Values 28

2.10 Range of Character Values 29

2.11 Range of Floating-Point Values 29

2.12 Boolean Values 30

2.13 Summary of Primitive Data Types 30

2.14 Default Values 33

Chapter 3 393.1 Parameter Passing By Value 82

Chapter 4 1034.1 Accessing Members within a Class 130 4.2 Summary of Accessibility Modifiers for Top-Level Types 135

4.3 Summary of Other Modifiers for Types 137

4.4 Summary of Accessibility Modifiers for Members 144

4.5 Summary of Other Modifiers for Members 153

Chapter 5 1595.1 Selected Conversion Contexts and Conversion Categories 163

5.2 Operator Summary 167

5.3 Examples of Truncated Values 172

5.4 Arithmetic Operators 174

5.5 Examples of Arithmetic Expression Evaluation 180

5.6 Arithmetic Compound Assignment Operators 183

5.7 Relational Operators 191

5.9 Reference Equality Operators 192

5.8 Primitive Data Value Equality Operators 192

5.10 Truth-Values for Boolean Logical Operators 195

5.11 Boolean Logical Compound Assignment Operators 196

5.12 Conditional Operators 196

(29)

5.13 Truth-values for Conditional Operators 197

Chapter 6 2036.1 The return Statement 228

6.2 Granularities for Enabling and Disabling Assertions at Runtime 269 6.3 Enabling and Disabling Assertions in All System Classes at Runtime 272

Chapter 7 2837.1 Overriding vs. Overloading 293

7.2 Types and Values 317

Chapter 8 3518.1 Overview of Type Declarations 354 Chapter 9 389

Chapter 10 423

Chapter 11 46711.1 Selected Input Streams 477

11.2 Selected Output Streams 477

11.3 The DataInput and DataOutput Interfaces 480

11.4 Selected Readers 488

11.5 Selected Writers 490

11.6 Print Methods of the PrintWriter Class 491

11.7 Correspondence Between Selected Byte and Character Streams 500

Chapter 12 53112.1 Selected Language Codes 532

12.2 Selected Country Codes 532

12.3 Selected Predefined Locales for Languages 533

12.4 Selected Predefined Locales for Countries 533

12.5 Selected Field Numbers to Indicate Information in a Calendar 537 12.6 Selected Constants that Represent Values in a Calendar 538

12.7 Formatting Styles for Date and Time 542

12.8 Selected Characters 555

12.9 Selected Character Classes 556

12.10 Selected Predefined Character Classes 557

12.11 Boundary Matchers 557

12.12 Selected Logical Operators 558

12.13 Quantifier Classification 561

12.14 Implications of the Limit Value in the split() Method 564

12.15 Formatting Conversions 596

12.16 Flags 597

12.18 Selected Format Exceptions 601

12.17 Selected Time/Date Composition Conversions 601

Chapter 13 61313.1 Thread States 636

Chapter 14 66114.1 Summary of Subtyping Relationships for Generic Types 675 14.2 Get and Set Operations Using Parameterized References 682 14.3 Summary of Get and Set Operations using Parameterized References 684

14.4 Examples of Type Erasure 714

14.5 Examples of Reifiable Types 723

14.6 Examples of Non-Reifiable Types 723

Chapter 15 74715.1 Core Interfaces in the Collections Framework 779 15.2 Summary of Collection and Map Implementations 782

15.3 Bulk Operations and Set Logic 796

G.1 Number Systems 1005

G.2 Representing Signed byte Values Using 2’s Complement 1010

(30)

xxix

List of Examples

Chapter 1 1

1.1 Basic Elements of a Class Declaration 3

1.2 Static Members in Class Declaration 8

1.3 Defining a Subclass 11

1.4 An Application 15

Chapter 2 19

2.1 Default Values for Fields 33

2.2 Flagging Uninitialized Local Variables of Primitive Data Types 34 2.3 Flagging Uninitialized Local Reference Variables 35

Chapter 3 39

3.1 A JavaBean 42

3.2 Using the this Reference 46

3.3 Namespaces 49

3.4 Using Enums 55

3.5 Declaring Enum Constructors and Members 56

3.6 Declaring Constant-Specific Class Bodies 60

3.7 Using Arrays 73

3.8 Using Anonymous Arrays 75

3.9 Using Multidimensional Arrays 78

3.10 Passing Primitive Values 83

3.11 Passing Reference Values 84

3.12 Passing Arrays 86

3.13 Array Elements as Primitive Data Values 88

3.14 Array Elements as Reference Values 88

3.15 Calling a Varargs Method 91

3.16 Passing Program Arguments 95

Chapter 4 103

4.1 Defining Packages and Using Type Import 107

4.2 Single Static Import 110

4.3 Avoiding the Interface Constant Antipattern 110

4.4 Importing Enum Constants 111

4.5 Shadowing by Importing 112

4.6 Conflict in Importing Static Method with the Same Signature 113

4.7 Importing Nested Static Types 114

4.8 Using Properties 123

4.9 Class Scope 131

4.10 Accessibility Modifiers for Classes and Interfaces 133

References

Related documents

Table 1 lists the KOI planet candidates and our measurements of their host star parameters: spectral type, effective temperature, metallicity, mass, and radius, with

There are many augmented reality (AR) applications avail- able that can be used to create educational contents for these mobile devices. This paper surveys the most popular

(B) the adsorption at a single site on the surface may involve multiple molecules at the same time.. (C) the mass of gas striking a given area of surface is proportional to the

Four basic themes emerged from the analysis; social and cyber arrangements within the Dublin Chemsex scene; poly drug use and experiences of drug dependence; drug and sexual

As shown in Table 4 , the vehicle with direct yaw moment control through the electric drivetrains (Sport or Nor- mal modes) experiences considerably lower deceleration values than

The VX Cycle offers a broad range of scales for the cost-effective production of LNG/CCNG, and the Cycle can be integrated with existing CNG stations, pipeline compressor stations

NSF CCLI has funded the development of this Information Security course that would enable students to help small businesses plan and audit security, via service

○ If BP elevated, think primary aldosteronism, Cushing’s, renal artery stenosis, ○ If BP normal, think hypomagnesemia, severe hypoK, Bartter’s, NaHCO3,