Skip to main content

OCP: Oracle Certified Professional Java SE 8 Programmer II Study Guide: Exam 1Z0-809

OCP: Oracle Certified Professional Java SE 8 Programmer II Study Guide: Exam 1Z0-809

Jeanne Boyarsky, Scott Selikoff

ISBN: 978-1-119-06789-4

Dec 2015

720 pages



Complete, trusted preparation for the Java Programmer II exam

OCP: Oracle Certified Professional Java SE 8 Programmer II Study Guide is your comprehensive companion for preparing for Exam 1Z0-809 as well as upgrade Exam 1Z0-810 and Exam 1Z0-813. With full coverage of 100% of exam objectives, this invaluable guide reinforces what you know, teaches you what you don't know, and gives you the hands-on practice you need to boost your skills. Written by expert Java developers, this book goes beyond mere exam prep with the insight, explanations and perspectives that come from years of experience. You'll review the basics of object-oriented programming, understand functional programming, apply your knowledge to database work, and much more. From the basic to the advanced, this guide walks you through everything you need to know to confidently take the OCP 1Z0-809 Exam and upgrade exams 1Z0-810 and 1Z0-813.

Java 8 represents the biggest changes to the language to date, and the latest exam now requires that you demonstrate functional programming competence in order to pass. This guide has you covered, with clear explanations and expert advice.

  • Understand abstract classes, interfaces, and class design
  • Learn object-oriented design principles and patterns
  • Delve into functional programming, advanced strings, and localization
  • Master IO, NIO, and JDBC with expert-led database practice

If you're ready to take the next step in your IT career, OCP: Oracle Certified Professional Java SE 8 Programmer II Study Guide is your ideal companion on the road to certification.

Related Resources

Introduction xix

Assessment Test xxxviii

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

Listing Directory Contents 491

Printing File Contents 492

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

ChapterPageDetailsDatePrint Run
6320Errata in text
Question 11 INCORRECT: A. Exception CORRECT: A. IllegalFormatException

Appendix A552Errata in text
Appendix A ? Answers to Review Questions
Answer for #11
A, F. B is incorrect because it does not use the return keyword.
C, D, and E are incorrect because the variable e is already in use from
the lambda and cannot be redefined. Additionally, C is missing the
return keyword and E is missing the semicolon. A and F are the only
correct lambda expressions that match the functional interface.

A, D, F. B is incorrect because it does not use the return keyword.
C and E are incorrect because the variable e is already in use from
the lambda and cannot be redefined. Additionally, C is missing the
return keyword and E is missing the semicolon. A, D, and F are the
only correct lambda expressions that match the functional interface.

Appendix A561Errata in text
Answers to review questions
Chapter Test / Chapter 6

Question 11
B, D, E

A, B, D, E