+353-1-416-8900REST OF WORLD
+44-20-3973-8888REST OF WORLD
1-917-300-0470EAST COAST U.S
1-800-526-8630U.S. (TOLL FREE)

OCP Oracle Certified Professional Java SE 17 Developer Study Guide. Exam 1Z0-829. Edition No. 1. Sybex Study Guide

  • Book

  • 1056 Pages
  • April 2022
  • John Wiley and Sons Ltd
  • ID: 5840531

An effective and practical study aid to the new OCP Java SE 17 Developer certification exam

In the OCP Oracle Certified Professional Java SE 17 Developer Study Guide: Exam 1Z0-829, you'll find accessible and essential test prep material for the in-demand and practical OCP Java SE 17 Developer certification. Providing comprehensive coverage of all OCP Java SE 17 exam objectives and competencies, the Study Guide offers you access to all the skills and knowledge you'll need to succeed on the test and in the field as a new or experienced Java developer.

This book provides material on records, sealed classes, text blocks, dates, streams, controlling program flow, using the Java object-oriented approach, handling exceptions, working with arrays and collections, and more. You'll also get:

  • Intuitively organized information that aligns with the competencies tested on the exam and those required by real-world Java developers
  • Opportunities to practice and develop skills that remain in high demand in the IT industry
  • Access to the Sybex online learning center, with chapter review questions, full-length practice exams, hundreds of electronic flashcards, and a glossary of key terms

Perfect for anyone prepping for the brand-new OCP Java SE 17 credential, OCP Oracle Certified Professional Java SE 17 Developer Study Guide: Exam 1Z0-829 is also a can't-miss reference for practicing and aspiring Java developers seeking to learn or reinforce their foundational skills in Java programming and improve their performance on the job.

Table of Contents

Introduction xxiii

Assessment Test xlv
Chapter 1 Building Blocks 1

Learning about the Environment 2

Major Components of Java 2

Downloading a JDK 3

Understanding the Class Structure 4

Fields and Methods 4

Comments 5

Classes and Source Files 7

Writing a main() Method 8

Creating a main() Method 8

Passing Parameters to a Java Program 9

Understanding Package Declarations and Imports 11

Packages 12

Wildcards 13

Redundant Imports 13

Naming Conflicts 15

Creating a New Package 16

Compiling and Running Code with Packages 16

Compiling to Another Directory 18

Compiling with JAR Files 20

Creating a JAR File 20

Ordering Elements in a Class 21

Creating Objects 23

Calling Constructors 23

Reading and Writing Member Fields 24

Executing Instance Initializer Blocks 24

Following the Order of Initialization 25

Understanding Data Types 26

Using Primitive Types 27

Using Reference Types 29

Distinguishing between Primitives and Reference Types 30

Creating Wrapper Classes 31

Defining Text Blocks 32

Declaring Variables 34

Identifying Identifiers 35

Declaring Multiple Variables 36

Initializing Variables 38

Creating Local Variables 38

Passing Constructor and Method Parameters 40

Defining Instance and Class Variables 41

Inferring the Type with var 41

Managing Variable Scope 45

Limiting Scope 45

Tracing Scope 46

Applying Scope to Classes 47

Reviewing Scope 48

Destroying Objects 48

Understanding Garbage Collection 48

Tracing Eligibility 49

Summary 51

Exam Essentials 52

Review Questions 54

Chapter 2 Operators 65

Understanding Java Operators 66

Types of Operators 66

Operator Precedence 67

Applying Unary Operators 69

Complement and Negation Operators 70

Increment and Decrement Operators 71

Working with Binary Arithmetic Operators 72

Arithmetic Operators 72

Numeric Promotion 75

Assigning Values 77

Assignment Operator 77

Casting Values 77

Compound Assignment Operators 81

Return Value of Assignment Operators 82

Comparing Values 83

Equality Operators 83

Relational Operators 84

Logical Operators 87

Conditional Operators 88

Making Decisions with the Ternary Operator 90

Summary 92

Exam Essentials 92

Review Questions 94

Chapter 3 Making Decisions 101

Creating Decision- Making Statements 102

Statements and Blocks 102

The if Statement 103

The else Statement 104

Shortening Code with Pattern Matching 106

Applying switch Statements 110

The switch Statement 110

The switch Expression 115

Writing while Loops 121

The while Statement 121

The do/while Statement 123

Infinite Loops 123

Constructing for Loops 124

The for Loop 124

The for- each Loop 129

Controlling Flow with Branching 131

Nested Loops 131

Adding Optional Labels 132

The break Statement 133

The continue Statement 135

The return Statement 137

Unreachable Code 138

Reviewing Branching 139

Summary 139

Exam Essentials 140

Review Questions 142

Chapter 4 Core APIs 155

Creating and Manipulating Strings 156

Concatenating 157

Important String Methods 158

Method Chaining 169

Using the StringBuilder Class 170

Mutability and Chaining 171

Creating a StringBuilder 172

Important StringBuilder Methods 172

Understanding Equality 175

Comparing equals() and == 175

The String Pool 176

Understanding Arrays 178

Creating an Array of Primitives 179

Creating an Array with Reference Variables 180

Using an Array 182

Sorting 183

Searching 184

Comparing 185

Using Methods with Varargs 187

Working with Multidimensional Arrays 188

Calculating with Math APIs 190

Finding the Minimum and Maximum 190

Rounding Numbers 191

Determining the Ceiling and Floor 191

Calculating Exponents 192

Generating Random Numbers 192

Working with Dates and Times 192

Creating Dates and Times 193

Manipulating Dates and Times 197

Working with Periods 199

Working with Durations 202
Period vs. Duration 204

Working with Instants 205

Accounting for Daylight Saving Time 206

Summary 208

Exam Essentials 209

Review Questions 210

Chapter 5 Methods 219

Designing Methods 220

Access Modifiers 221

Optional Specifiers 222

Return Type 224

Method Name 226

Parameter List 226

Method Signature 227

Exception List 227

Method Body 228

Declaring Local and Instance Variables 228

Local Variable Modifiers 229

Effectively Final Variables 230

Instance Variable Modifiers 231

Working with Varargs 232

Creating Methods with Varargs 232

Calling Methods with Varargs 233

Accessing Elements of a Vararg 234

Using Varargs with Other Method Parameters 234

Applying Access Modifiers 235

Private Access 235

Package Access 236

Protected Access 237

Public Access 242

Reviewing Access Modifiers 242

Accessing static Data 243

Designing static Methods and Variables 243

Accessing a static Variable or Method 244

Class vs. Instance Membership 245
Static Variable Modifiers 248
Static Initializers 250
Static Imports 251

Passing Data among Methods 253

Passing Objects 253

Returning Objects 255

Autoboxing and Unboxing Variables 256

Overloading Methods 258

Reference Types 259

Primitives 260

Autoboxing 261

Arrays 261

Varargs 261

Putting It All Together 262

Summary 263

Exam Essentials 264

Review Questions 265

Chapter 6 Class Design 275

Understanding Inheritance 276

Declaring a Subclass 276

Class Modifiers 278

Single vs. Multiple Inheritance 279

Inheriting Object 279

Creating Classes 281

Extending a Class 281

Applying Class Access Modifiers 282

Accessing the this Reference 283

Calling the super Reference 284

Declaring Constructors 286

Creating a Constructor 286

The Default Constructor 287

Calling Overloaded Constructors with this() 289

Calling Parent Constructors with super() 292

Initializing Objects 297

Initializing Classes 297

Initializing final Fields 298

Initializing Instances 300

Inheriting Members 304

Overriding a Method 305

Redeclaring private Methods 311

Hiding Static Methods 311

Hiding Variables 313

Writing final Methods 314

Creating Abstract Classes 315

Introducing Abstract Classes 315

Declaring Abstract Methods 317

Creating a Concrete Class 318

Creating Constructors in Abstract Classes 320

Spotting Invalid Declarations 321

Creating Immutable Objects 323

Declaring an Immutable Class 323

Performing a Defensive Copy 325

Summary 326

Exam Essentials 327

Review Questions 330

Chapter 7 Beyond Classes 345

Implementing Interfaces 346

Declaring and Using an Interface 346

Extending an Interface 348

Inheriting an Interface 349

Inserting Implicit Modifiers 351

Declaring Concrete Interface Methods 353

Working with Enums 361

Creating Simple Enums 361

Using Enums in switch Statements 363

Adding Constructors, Fields, and Methods 364

Sealing Classes 367

Declaring a Sealed Class 367

Compiling Sealed Classes 368

Specifying the Subclass Modifier 369

Omitting the permits Clause 370

Sealing Interfaces 372

Reviewing Sealed Class Rules 372

Encapsulating Data with Records 373

Understanding Encapsulation 374

Applying Records 375

Understanding Record Immutability 377

Declaring Constructors 378

Customizing Records 381

Creating Nested Classes 382

Declaring an Inner Class 382

Creating a static Nested Class 386

Writing a Local Class 387

Defining an Anonymous Class 389

Reviewing Nested Classes 391

Understanding Polymorphism 392

Object vs. Reference 393

Casting Objects 395

The instanceof Operator 397

Polymorphism and Method Overriding 397

Overriding vs. Hiding Members 399

Summary 401

Exam Essentials 402

Review Questions 404

Chapter 8 Lambdas and Functional Interfaces 419

Writing Simple Lambdas 420

Looking at a Lambda Example 420

Learning Lambda Syntax 422

Coding Functional Interfaces 426

Defining a Functional Interface 426

Adding Object Methods 427

Using Method References 429

Calling static Methods 430

Calling Instance Methods on a Particular Object 430

Calling Instance Methods on a Parameter 432

Calling Constructors 433

Reviewing Method References 433

Working with Built- in Functional Interfaces 434

Implementing Supplier 435

Implementing Consumer and BiConsumer 436

Implementing Predicate and BiPredicate 438

Implementing Function and BiFunction 439

Implementing UnaryOperator and BinaryOperator 440

Checking Functional Interfaces 441

Using Convenience Methods on Functional Interfaces 442

Learning the Functional Interfaces for Primitives 443

Working with Variables in Lambdas 445

Listing Parameters 446

Using Local Variables inside a Lambda Body 448

Referencing Variables from the Lambda Body 449

Summary 450

Exam Essentials 451

Review Questions 452

Chapter 9 Collections and Generics 463

Using Common Collection APIs 464

Using the Diamond Operator 465

Adding Data 466

Removing Data 466

Counting Elements 467

Clearing the Collection 467

Check Contents 468

Removing with Conditions 468

Iterating 469

Determining Equality 470

Using the List Interface 471

Comparing List Implementations 472

Creating a List with a Factory 472

Creating a List with a Constructor 473

Working with List Methods 474

Converting from List to an Array 476

Using the Set Interface 477

Comparing Set Implementations 477

Working with Set Methods 478

Using the Queue and Deque Interfaces 479

Comparing Deque Implementations 480

Working with Queue and Deque Methods 480

Using the Map Interface 483

Comparing Map Implementations 484

Working with Map Methods 484

Calling Basic Methods 486

Iterating through a Map 487

Getting Values Safely 487

Replacing Values 488

Putting if Absent 488

Merging Data 488

Comparing Collection Types 490

Sorting Data 492

Creating a Comparable Class 492

Comparing Data with a Comparator 496

Comparing Comparable and Comparator 497

Comparing Multiple Fields 498

Sorting and Searching 500

Sorting a List 503

Working with Generics 503

Creating Generic Classes 504

Understanding Type Erasure 506

Implementing Generic Interfaces 509

Writing Generic Methods 510

Creating a Generic Record 512

Bounding Generic Types 512

Putting It All Together 517

Summary 519

Exam Essentials 520

Review Questions 521

Chapter 10 Streams 531

Returning an Optional 532

Creating an Optional 533

Dealing with an Empty Optional 534

Using Streams 536

Understanding the Pipeline Flow 536

Creating Stream Sources 539

Using Common Terminal Operations 541

Using Common Intermediate Operations 549

Putting Together the Pipeline 553

Working with Primitive Streams 557

Creating Primitive Streams 557

Mapping Streams 560

Using Optional with Primitive Streams 562

Summarizing Statistics 564

Working with Advanced Stream Pipeline Concepts 565

Linking Streams to the Underlying Data 565

Chaining Optionals 566

Using a Spliterator 569

Collecting Results 570

Summary 578

Exam Essentials 579

Review Questions 581

Chapter 11 Exceptions and Localization 591

Understanding Exceptions 592

The Role of Exceptions 592

Understanding Exception Types 593

Throwing an Exception 596

Calling Methods That Throw Exceptions 598

Overriding Methods with Exceptions 599

Printing an Exception 600

Recognizing Exception Classes 600
RuntimeException Classes 601

Checked Exception Classes 604
Error Classes 605

Handling Exceptions 605

Using try and catch Statements 606

Chaining catch Blocks 607

Applying a Multi- catch Block 609

Adding a finally Block 611

Automating Resource Management 615

Introducing Try- with- Resources 615

Basics of Try- with- Resources 616

Applying Effectively Final 620

Understanding Suppressed Exceptions 621

Formatting Values 624

Formatting Numbers 624

Formatting Dates and Times 625

Customizing the Date/Time Format 626

Supporting Internationalization and Localization 629

Picking a Locale 630

Localizing Numbers 632

Localizing Dates 637

Specifying a Locale Category 638

Loading Properties with Resource Bundles 639

Creating a Resource Bundle 640

Picking a Resource Bundle 641

Selecting Resource Bundle Values 643

Formatting Messages 645

Using the Properties Class 645

Summary 646

Exam Essentials 647

Review Questions 648

Chapter 12 Modules 661

Introducing Modules 662

Exploring a Module 663

Benefits of Modules 664

Creating and Running a Modular Program 664

Creating the Files 665

Compiling Our First Module 666

Running Our First Module 668

Packaging Our First Module 669

Updating Our Example for Multiple Modules 669

Updating the Feeding Module 670

Creating a Care Module 670

Creating the Talks Module 672

Creating the Staff Module 674

Diving into the Module Declaration 675

Exporting a Package 676

Requiring a Module Transitively 677

Opening a Package 679

Creating a Service 680

Declaring the Service Provider Interface 681

Creating a Service Locator 682

Invoking from a Consumer 684

Adding a Service Provider 685

Reviewing Directives and Services 686

Discovering Modules 687

Identifying Built- in Modules 688

Getting Details with java 690

Describing with jar 693

Learning about Dependencies with jdeps 693

Using the -- jdk- internals Flag 695

Using Module Files with jmod 696

Creating Java Runtimes with jlink 696

Reviewing Command- Line Options 697

Comparing Types of Modules 700

Named Modules 701

Automatic Modules 701

Unnamed Modules 704

Reviewing Module Types 704

Migrating an Application 704

Determining the Order 705

Exploring a Bottom- Up Migration Strategy 706

Exploring a Top- Down Migration Strategy 707

Splitting a Big Project into Modules 709

Failing to Compile with a Cyclic Dependency 709

Summary 711

Exam Essentials 712

Review Questions 713

Chapter 13 Concurrency 721

Introducing Threads 722

Understanding Thread Concurrency 723

Creating a Thread 724

Distinguishing Thread Types 725

Managing a Thread’s Life Cycle 727

Polling with Sleep 727

Interrupting a Thread 729

Creating Threads with the Concurrency API 730

Introducing the Single- Thread Executor 730

Shutting Down a Thread Executor 731

Submitting Tasks 732

Waiting for Results 733

Scheduling Tasks 737

Increasing Concurrency with Pools 739

Writing Thread- Safe Code 740

Understanding Thread- Safety 740

Accessing Data with volatile 741

Protecting Data with Atomic Classes 742

Improving Access with Synchronized Blocks 744

Synchronizing on Methods 746

Understanding the Lock Framework 747

Orchestrating Tasks with a CyclicBarrier 751

Using Concurrent Collections 754

Understanding Memory Consistency Errors 754

Working with Concurrent Classes 755

Obtaining Synchronized Collections 757

Identifying Threading Problems 758

Understanding Liveness 758

Managing Race Conditions 761

Working with Parallel Streams 761

Creating Parallel Streams 762

Performing a Parallel Decomposition 762

Processing Parallel Reductions 764

Summary 770

Exam Essentials 770

Review Questions 772

Chapter 14 I/o 785

Referencing Files and Directories 786

Conceptualizing the File System 786

Creating a File or Path 789

Operating on File and Path 793

Using Shared Functionality 793

Handling Methods That Declare IOException 797

Providing NIO.2 Optional Parameters 797

Interacting with NIO.2 Paths 799

Creating, Moving, and Deleting Files and Directories 805

Comparing Files with isSameFile() and mismatch() 809

Introducing I/O Streams 811

Understanding I/O Stream Fundamentals 811

Learning I/O Stream Nomenclature 812

Reading and Writing Files 817

Using I/O Streams 817

Enhancing with Files 820

Combining with newBufferedReader() and newBufferedWriter() 822

Reviewing Common Read and Write Methods 823

Serializing Data 824

Applying the Serializable Interface 825

Marking Data transient 827

Ensuring That a Class Is Serializable 827

Storing Data with ObjectOutputStream and ObjectInputStream 828

Understanding the Deserialization Creation Process 830

Interacting with Users 832

Printing Data to the User 832

Reading Input as an I/O Stream 833

Closing System Streams 833

Acquiring Input with Console 834

Working with Advanced APIs 837

Manipulating Input Streams 838

Discovering File Attributes 840

Traversing a Directory Tree 843

Searching a Directory 847

Review of Key APIs 848

Summary 850

Exam Essentials 851

Review Questions 852

Chapter 15 Jdbc 863

Introducing Relational Databases and SQL 864

Identifying the Structure of a Relational Database 866

Writing Basic SQL Statements 867

Introducing the Interfaces of JDBC 868

Connecting to a Database 870

Building a JDBC URL 870

Getting a Database Connection 871

Working with a PreparedStatement 873

Obtaining a PreparedStatement 874

Executing a PreparedStatement 875

Working with Parameters 878

Updating Multiple Records 881

Getting Data from a ResultSet 882

Reading a ResultSet 882

Getting Data for a Column 885

Using Bind Variables 887

Calling a CallableStatement 887

Calling a Procedure without Parameters 888

Passing an IN Parameter 889

Returning an OUT Parameter 889

Working with an INOUT Parameter 890

Comparing Callable Statement Parameters 891

Using Additional Options 891

Controlling Data with Transactions 892

Committing and Rolling Back 892

Bookmarking with Savepoints 894

Reviewing Transaction APIs 895

Closing Database Resources 895

Summary 897

Exam Essentials 898

Review Questions 900

Appendix Answers to the Review Questions 909

Chapter 1: Building Blocks 910

Chapter 2: Operators 913

Chapter 3: Making Decisions 916

Chapter 4: Core APIs 921

Chapter 5: Methods 924

Chapter 6: Class Design 927

Chapter 7: Beyond Classes 932

Chapter 8: Lambdas and Functional Interfaces 936

Chapter 9: Collections and Generics 939

Chapter 10: Streams 942

Chapter 11: Exceptions and Localization 945

Chapter 12: Modules 949

Chapter 13: Concurrency 951

Chapter 14: I/o 955

Chapter 15: Jdbc 959
Index 963

Authors

Scott Selikoff Selikoff Solutions, LLC. Jeanne Boyarsky CodeRanch.