Disclaimer: Authors have full rights over their works. Reproduction of any part of the content is prohibited without prior authorization.
SUMMARY
Items Found: 307
- Chapter 1 Advanced Class Design 1
- Chapter 2 Design Patterns and Principles 47
- Chapter 3 Generics and Collections 103
- Chapter 4 Functional Programming 171
- Chapter 5 Dates,Strings,and Localization 233
- Chapter 6 Exceptions and Assertions 283
- Chapter 7 Concurrency 325
- Chapter 8 IO 405
- Chapter 9 NIO.2 453
- Chapter 10 JDBC 505
- Appendix A Answers to Review Questions 547
- Appendix B Study Tips 575
- Appendix C Upgrading from Java 6 or Earlier 595
- Index 649
- Chapter 1 Advanced Class Design 1
- Reviewing OCA Concepts 2
- Access Modifiers 2
- Overloading and Overriding 4
- Abstract Classes 5
- Static and Final 6
- Imports 6
- Using instanceof 7
- Understanding Virtual Method Invocation 9
- Annotating Overridden Methods 11
- Coding equals,hashCode,and toString 13
- toString 13
- equals 15
- hashCode 18
- Working with Enums 20
- Using Enums in Switch Statements 21
- Adding Constructors,Fields,and Methods 22
- Creating Nested Classes 24
- Member Inner Classes 25
- Local Inner Classes 27
- Anonymous Inner Classes 29
- Static Nested Classes 31
- Summary 33
- Exam Essentials 34
- Review Questions 36
- Chapter 2 Design Patterns and Principles 47
- Designing an Interface 48
- Purpose of an Interface 51
- Introducing Functional Programming 52
- Defining a Functional Interface 53
- Implementing Functional Interfaces with Lambdas 55
- Applying the Predicate Interface 60
- Implementing Polymorphism 61
- Distinguishing between an Object and a Reference 63
- Casting Object References 64
- Understanding Design Principles 66
- Encapsulating Data 66
- Creating JavaBeans 69
- Applying the Is?a Relationship 71
- Applying the Has?a Relationship 73
- Composing Objects 74
- Working with Design Patterns 75
- Applying the Singleton Pattern 76
- Creating Immutable Objects 82
- Using the Builder Pattern 86
- Creating Objects with the Factory Pattern 89
- Summary 93
- Exam Essentials 93
- Review Questions 95
- Chapter 3 Generics and Collections 103
- Reviewing OCA Collections 104
- Array and ArrayList 104
- Searching and Sorting 105
- Wrapper Classes and Autoboxing 106
- The Diamond Operator 107
- Working with Generics 108
- Generic Classes 109
- Generic Interfaces 112
- Generic Methods 114
- Interacting with Legacy Code 114
- Bounds 117
- Putting It All Together 122
- Using Lists,Sets,Maps,and Queues 124
- Common Collections Methods 125
- Using the List Interface 127
- Using the Set Interface 132
- Using the Queue Interface 134
- Map 138
- Comparing Collection Types 140
- Comparator vs. Comparable 143
- Comparable 143
- Comparator 146
- Searching and Sorting 150
- Additions in Java 8 152
- Using Method References 152
- Removing Conditionally 154
- Updating All Elements 155
- Looping through a Collection 155
- Using New Java 8 Map APIs 155
- Summary 159
- Exam Essentials 161
- Review Questions 162
- Chapter 4 Functional Programming 171
- Using Variables in Lambdas 172
- Working with Built-In Functional Interfaces 173
- Implementing Supplier 174
- Implementing Consumer and BiConsumer 175
- Implementing Predicate and BiPredicate 177
- Implementing Function and BiFunction 178
- Implementing UnaryOperator and BinaryOperator 180
- Checking Functional Interfaces 181
- Returning an Optional 182
- Using Streams 185
- Creating Stream Sources 188
- Using Common Terminal Operations 189
- Using Common Intermediate Operations 196
- Putting Together the Pipeline 200
- Printing a Stream 204
- Working with Primitives 205
- Creating Primitive Streams 205
- Using Optional with Primitive Streams 208
- Summarizing Statistics 210
- Learning the Functional Interfaces for Primitives 210
- Working with Advanced Stream Pipeline Concepts 213
- Linking Streams to the Underlying Data 213
- Chaining Optionals 214
- Collecting Results 217
- Summary 223
- Exam Essentials 224
- Review Questions 226
- Chapter 5 Dates,Strings,and Localization 233
- Working with Dates and Times 234
- Creating Dates and Times 235
- Manipulating Dates and Times 241
- Working with Periods 244
- Working with Durations 247
- Accounting for Daylight Savings Time 251
- Reviewing the String class 253
- Adding Internationalization
- and Localization 255
- Picking a Locale 256
- Using a Resource Bundle 258
- Formatting Numbers 267
- Formatting Dates and Times 270
- Summary 273
- Exam Essentials 274
- Review Questions 276
- Chapter 6 Exceptions and Assertions 283
- Reviewing Exceptions 284
- Exceptions Terminology 284
- Categories of Exceptions 285
- Exceptions on the OCP 286
- Try Statement 288
- Throw vs. Throws 289
- Creating Custom Exceptions 289
- Using Multi-catch 291
- Using Try-With-Resources 296
- Try-With-Resources Basics 298
- AutoCloseable 300
- Suppressed Exceptions 302
- Putting It Together 305
- Rethrowing Exceptions 305
- Working with Assertions 308
- The assert Statement 308
- Enabling Assertions 309
- Using Assertions 310
- Summary 314
- Exam Essentials 315
- Review Questions 316
- Chapter 7 Concurrency 325
- Introducing Threads 327
- Distinguishing Thread Types 328
- Understanding Thread Concurrency 328
- Introducing Runnable 330
- Creating a Thread 331
- Polling with Sleep 334
- Creating Threads with the ExecutorService 335
- Introducing the Single-Thread Executor 335
- Shutting Down a Thread Executor 337
- Submitting Tasks 338
- Waiting for Results 340
- Scheduling Tasks 345
- Increasing Concurrency with Pools 348
- Synchronizing Data Access 350
- Protecting Data with Atomic Classes 352
- Improving Access with Synchronized Blocks 354
- Synchronizing Methods 356
- Understanding the Cost of Synchronization 357
- Using Concurrent Collections 358
- Introducing Concurrent Collections 358
- Understanding Memory Consistency Errors 359
- Working with Concurrent Classes 360
- Obtaining Synchronized Collections 365
- Working with Parallel Streams 366
- Creating Parallel Streams 366
- Processing Tasks in Parallel 367
- Processing Parallel Reductions 372
- Managing Concurrent Processes 377
- Creating a CyclicBarrier 377
- Applying the Fork/Join Framework 381
- Identifying Threading Problems 387
- Understanding Liveness 387
- Managing Race Conditions 391
- Summary 392
- Exam Essentials 393
- Review Questions 394
- Chapter 8 IO 405
- Understanding Files and Directories 406
- Conceptualizing the File System 406
- Introducing the File Class 407
- Introducing Streams 411
- Stream Fundamentals 411
- Stream Nomenclature 412
- Common Stream Operations 418
- Working with Streams 420
- The FileInputStream and FileOutputStream Classes 420
- The FileReader and FileWriter classes 424
- The ObjectInputStream and ObjectOutputStream Classes 426
- The PrintStream and PrintWriter Classes 432
- Review of Stream Classes 435
- Interacting with Users 437
- The Old Way 437
- The New Way 438
- Summary 442
- Exam Essentials 443
- Review Questions 445
- Chapter 9 NIO.2 453
- Introducing NIO.2 454
- Introducing Path 455
- Creating Paths 456
- Interacting with Paths and Files 460
- Providing Optional Arguments 461
- Using Path Objects 462
- Interacting with Files 471
- Understanding File Attributes 478
- Discovering Basic File Attributes 478
- Improving Access with Views 483
- Presenting the New Stream Methods 487
- Conceptualizing Directory Walking 487
- Walking a Directory 488
- Searching a Directory 490
- Comparing Legacy File and NIO.2 Methods 494
- Summary 495
- Exam Essentials 495
- Review Questions 497
- Chapter 10 JDBC 505
- Introducing Relational Databases and SQL 507
- Identifying the Structure of a Relational Database 508
- Writing Basic SQL Statements 510
- Introducing the Interfaces of JDBC 511
- Connecting to a Database 513
- Building a JDBC URL 513
- Getting a Database Connection 515
- Obtaining a Statement 518
- Choosing a ResultSet Type 519
- Choosing a ResultSet Concurrency Mode 520
- Executing a Statement 520
- Getting Data from a ResultSet 524
- Reading a ResultSet 524
- Getting Data for a Column 526
- Scrolling ResultSet 529
- Closing Database Resources 533
- Dealing with Exceptions 535
- Summary 536
- Exam Essentials 537
- Review Questions 539
- Appendix A Answers to Review Questions 547
- Chapter 1: Advanced Class Design 548
- Chapter 2: Design Patterns and Principles 550
- Chapter 3: Generics and Collections 553
- Chapter 4: Functional Programming 556
- Chapter 5: Dates,Strings,and Localization 558
- Chapter 6: Exceptions and Assertions 560
- Chapter 7: Concurrency 561
- Chapter 8: IO 565
- Chapter 9: NIO.2 568
- Chapter 10: JDBC 571
- Appendix B Study Tips 575
- Studying for the Test 576
- Creating a Study Plan 576
- Comparing Previous Exams 578
- Creating and Running Sample Applications 579
- Taking the Test 582
- Understanding the Question 582
- Taking Advantage of the Exam Software 587
- Using the Provided Writing Material 587
- Choosing the Best Answer 590
- Optimizing Your Time 591
- Getting a Good Night’s Rest 593
- Appendix C Upgrading from Java 6 or Earlier 595
- Enhancing the Java Language 596
- Using the Diamond Operator 596
- Creating Literals 597
- Making Decisions with Switch 598
- Formatting and Parsing 603
- Using DecimalFormat Flags 603
- Using DateFormat 603
- Formatting 604
- Parsing 605
- Custom Date Formats 606
- Applying Locks 607
- Understanding the Lock Framework 607
- Using a ReentrantLock 610
- Understanding Read/Write Locks 614
- Using a ReentrantReadWriteLock 615
- Working with Directories 617
- Traversing Directories 618
- Monitoring a Directory for Changes 625
- Summary 633
- Exam Essentials 633
- Review Questions 635
- Answers to Practice Test 645
- Index 649