Del 21 - Sybex Study Guide
OCP Oracle Certified Professional Java SE 17 Developer Study Guide
Exam 1Z0-829
Häftad, Engelska, 2022
Av Scott Selikoff, Jeanne Boyarsky, LLC) Selikoff, Scott (Selikoff Solutions, Jeanne (CodeRanch) Boyarsky
759 kr
Produktinformation
- Utgivningsdatum2022-04-28
- Mått188 x 236 x 56 mm
- Vikt1 701 g
- FormatHäftad
- SpråkEngelska
- SerieSybex Study Guide
- Antal sidor1 056
- FörlagJohn Wiley & Sons Inc
- ISBN9781119864585
Tillhör följande kategorier
ABOUT THE AUTHORSScott Selikoff has been a professional Java Enterprise architect for over 20 years. He currently works as a Staff Software Engineer at Google, specializing in Architecture and Cloud Services. He is a Leader of the Garden State Java User Group, helping to facilitate discussions and exchange of ideas within the community. Jeanne Boyarsky is a Java Champion and has worked as a Java developer for a major bank for more than 20 years. She is a senior moderator at CodeRanch, and trains and mentors students of all levels, including the programming department of a FIRST robotics team.
- Introduction xxiiiAssessment Test xlvChapter 1 Building Blocks 1Learning about the Environment 2Major Components of Java 2Downloading a JDK 3Understanding the Class Structure 4Fields and Methods 4Comments 5Classes and Source Files 7Writing a main() Method 8Creating a main() Method 8Passing Parameters to a Java Program 9Understanding Package Declarations and Imports 11Packages 12Wildcards 13Redundant Imports 13Naming Conflicts 15Creating a New Package 16Compiling and Running Code with Packages 16Compiling to Another Directory 18Compiling with JAR Files 20Creating a JAR File 20Ordering Elements in a Class 21Creating Objects 23Calling Constructors 23Reading and Writing Member Fields 24Executing Instance Initializer Blocks 24Following the Order of Initialization 25Understanding Data Types 26Using Primitive Types 27Using Reference Types 29Distinguishing between Primitives and Reference Types 30Creating Wrapper Classes 31Defining Text Blocks 32Declaring Variables 34Identifying Identifiers 35Declaring Multiple Variables 36Initializing Variables 38Creating Local Variables 38Passing Constructor and Method Parameters 40Defining Instance and Class Variables 41Inferring the Type with var 41Managing Variable Scope 45Limiting Scope 45Tracing Scope 46Applying Scope to Classes 47Reviewing Scope 48Destroying Objects 48Understanding Garbage Collection 48Tracing Eligibility 49Summary 51Exam Essentials 52Review Questions 54Chapter 2 Operators 65Understanding Java Operators 66Types of Operators 66Operator Precedence 67Applying Unary Operators 69Complement and Negation Operators 70Increment and Decrement Operators 71Working with Binary Arithmetic Operators 72Arithmetic Operators 72Numeric Promotion 75Assigning Values 77Assignment Operator 77Casting Values 77Compound Assignment Operators 81Return Value of Assignment Operators 82Comparing Values 83Equality Operators 83Relational Operators 84Logical Operators 87Conditional Operators 88Making Decisions with the Ternary Operator 90Summary 92Exam Essentials 92Review Questions 94Chapter 3 Making Decisions 101Creating Decision- Making Statements 102Statements and Blocks 102The if Statement 103The else Statement 104Shortening Code with Pattern Matching 106Applying switch Statements 110The switch Statement 110The switch Expression 115Writing while Loops 121The while Statement 121The do/while Statement 123Infinite Loops 123Constructing for Loops 124The for Loop 124The for- each Loop 129Controlling Flow with Branching 131Nested Loops 131Adding Optional Labels 132The break Statement 133The continue Statement 135The return Statement 137Unreachable Code 138Reviewing Branching 139Summary 139Exam Essentials 140Review Questions 142Chapter 4 Core APIs 155Creating and Manipulating Strings 156Concatenating 157Important String Methods 158Method Chaining 169Using the StringBuilder Class 170Mutability and Chaining 171Creating a StringBuilder 172Important StringBuilder Methods 172Understanding Equality 175Comparing equals() and == 175The String Pool 176Understanding Arrays 178Creating an Array of Primitives 179Creating an Array with Reference Variables 180Using an Array 182Sorting 183Searching 184Comparing 185Using Methods with Varargs 187Working with Multidimensional Arrays 188Calculating with Math APIs 190Finding the Minimum and Maximum 190Rounding Numbers 191Determining the Ceiling and Floor 191Calculating Exponents 192Generating Random Numbers 192Working with Dates and Times 192Creating Dates and Times 193Manipulating Dates and Times 197Working with Periods 199Working with Durations 202Period vs. Duration 204Working with Instants 205Accounting for Daylight Saving Time 206Summary 208Exam Essentials 209Review Questions 210Chapter 5 Methods 219Designing Methods 220Access Modifiers 221Optional Specifiers 222Return Type 224Method Name 226Parameter List 226Method Signature 227Exception List 227Method Body 228Declaring Local and Instance Variables 228Local Variable Modifiers 229Effectively Final Variables 230Instance Variable Modifiers 231Working with Varargs 232Creating Methods with Varargs 232Calling Methods with Varargs 233Accessing Elements of a Vararg 234Using Varargs with Other Method Parameters 234Applying Access Modifiers 235Private Access 235Package Access 236Protected Access 237Public Access 242Reviewing Access Modifiers 242Accessing static Data 243Designing static Methods and Variables 243Accessing a static Variable or Method 244Class vs. Instance Membership 245Static Variable Modifiers 248Static Initializers 250Static Imports 251Passing Data among Methods 253Passing Objects 253Returning Objects 255Autoboxing and Unboxing Variables 256Overloading Methods 258Reference Types 259Primitives 260Autoboxing 261Arrays 261Varargs 261Putting It All Together 262Summary 263Exam Essentials 264Review Questions 265Chapter 6 Class Design 275Understanding Inheritance 276Declaring a Subclass 276Class Modifiers 278Single vs. Multiple Inheritance 279Inheriting Object 279Creating Classes 281Extending a Class 281Applying Class Access Modifiers 282Accessing the this Reference 283Calling the super Reference 284Declaring Constructors 286Creating a Constructor 286The Default Constructor 287Calling Overloaded Constructors with this() 289Calling Parent Constructors with super() 292Initializing Objects 297Initializing Classes 297Initializing final Fields 298Initializing Instances 300Inheriting Members 304Overriding a Method 305Redeclaring private Methods 311Hiding Static Methods 311Hiding Variables 313Writing final Methods 314Creating Abstract Classes 315Introducing Abstract Classes 315Declaring Abstract Methods 317Creating a Concrete Class 318Creating Constructors in Abstract Classes 320Spotting Invalid Declarations 321Creating Immutable Objects 323Declaring an Immutable Class 323Performing a Defensive Copy 325Summary 326Exam Essentials 327Review Questions 330Chapter 7 Beyond Classes 345Implementing Interfaces 346Declaring and Using an Interface 346Extending an Interface 348Inheriting an Interface 349Inserting Implicit Modifiers 351Declaring Concrete Interface Methods 353Working with Enums 361Creating Simple Enums 361Using Enums in switch Statements 363Adding Constructors, Fields, and Methods 364Sealing Classes 367Declaring a Sealed Class 367Compiling Sealed Classes 368Specifying the Subclass Modifier 369Omitting the permits Clause 370Sealing Interfaces 372Reviewing Sealed Class Rules 372Encapsulating Data with Records 373Understanding Encapsulation 374Applying Records 375Understanding Record Immutability 377Declaring Constructors 378Customizing Records 381Creating Nested Classes 382Declaring an Inner Class 382Creating a static Nested Class 386Writing a Local Class 387Defining an Anonymous Class 389Reviewing Nested Classes 391Understanding Polymorphism 392Object vs. Reference 393Casting Objects 395The instanceof Operator 397Polymorphism and Method Overriding 397Overriding vs. Hiding Members 399Summary 401Exam Essentials 402Review Questions 404Chapter 8 Lambdas and Functional Interfaces 419Writing Simple Lambdas 420Looking at a Lambda Example 420Learning Lambda Syntax 422Coding Functional Interfaces 426Defining a Functional Interface 426Adding Object Methods 427Using Method References 429Calling static Methods 430Calling Instance Methods on a Particular Object 430Calling Instance Methods on a Parameter 432Calling Constructors 433Reviewing Method References 433Working with Built- in Functional Interfaces 434Implementing Supplier 435Implementing Consumer and BiConsumer 436Implementing Predicate and BiPredicate 438Implementing Function and BiFunction 439Implementing UnaryOperator and BinaryOperator 440Checking Functional Interfaces 441Using Convenience Methods on Functional Interfaces 442Learning the Functional Interfaces for Primitives 443Working with Variables in Lambdas 445Listing Parameters 446Using Local Variables inside a Lambda Body 448Referencing Variables from the Lambda Body 449Summary 450Exam Essentials 451Review Questions 452Chapter 9 Collections and Generics 463Using Common Collection APIs 464Using the Diamond Operator 465Adding Data 466Removing Data 466Counting Elements 467Clearing the Collection 467Check Contents 468Removing with Conditions 468Iterating 469Determining Equality 470Using the List Interface 471Comparing List Implementations 472Creating a List with a Factory 472Creating a List with a Constructor 473Working with List Methods 474Converting from List to an Array 476Using the Set Interface 477Comparing Set Implementations 477Working with Set Methods 478Using the Queue and Deque Interfaces 479Comparing Deque Implementations 480Working with Queue and Deque Methods 480Using the Map Interface 483Comparing Map Implementations 484Working with Map Methods 484Calling Basic Methods 486Iterating through a Map 487Getting Values Safely 487Replacing Values 488Putting if Absent 488Merging Data 488Comparing Collection Types 490Sorting Data 492Creating a Comparable Class 492Comparing Data with a Comparator 496Comparing Comparable and Comparator 497Comparing Multiple Fields 498Sorting and Searching 500Sorting a List 503Working with Generics 503Creating Generic Classes 504Understanding Type Erasure 506Implementing Generic Interfaces 509Writing Generic Methods 510Creating a Generic Record 512Bounding Generic Types 512Putting It All Together 517Summary 519Exam Essentials 520Review Questions 521Chapter 10 Streams 531Returning an Optional 532Creating an Optional 533Dealing with an Empty Optional 534Using Streams 536Understanding the Pipeline Flow 536Creating Stream Sources 539Using Common Terminal Operations 541Using Common Intermediate Operations 549Putting Together the Pipeline 553Working with Primitive Streams 557Creating Primitive Streams 557Mapping Streams 560Using Optional with Primitive Streams 562Summarizing Statistics 564Working with Advanced Stream Pipeline Concepts 565Linking Streams to the Underlying Data 565Chaining Optionals 566Using a Spliterator 569Collecting Results 570Summary 578Exam Essentials 579Review Questions 581Chapter 11 Exceptions and Localization 591Understanding Exceptions 592The Role of Exceptions 592Understanding Exception Types 593Throwing an Exception 596Calling Methods That Throw Exceptions 598Overriding Methods with Exceptions 599Printing an Exception 600Recognizing Exception Classes 600RuntimeException Classes 601Checked Exception Classes 604Error Classes 605Handling Exceptions 605Using try and catch Statements 606Chaining catch Blocks 607Applying a Multi- catch Block 609Adding a finally Block 611Automating Resource Management 615Introducing Try- with- Resources 615Basics of Try- with- Resources 616Applying Effectively Final 620Understanding Suppressed Exceptions 621Formatting Values 624Formatting Numbers 624Formatting Dates and Times 625Customizing the Date/Time Format 626Supporting Internationalization and Localization 629Picking a Locale 630Localizing Numbers 632Localizing Dates 637Specifying a Locale Category 638Loading Properties with Resource Bundles 639Creating a Resource Bundle 640Picking a Resource Bundle 641Selecting Resource Bundle Values 643Formatting Messages 645Using the Properties Class 645Summary 646Exam Essentials 647Review Questions 648Chapter 12 Modules 661Introducing Modules 662Exploring a Module 663Benefits of Modules 664Creating and Running a Modular Program 664Creating the Files 665Compiling Our First Module 666Running Our First Module 668Packaging Our First Module 669Updating Our Example for Multiple Modules 669Updating the Feeding Module 670Creating a Care Module 670Creating the Talks Module 672Creating the Staff Module 674Diving into the Module Declaration 675Exporting a Package 676Requiring a Module Transitively 677Opening a Package 679Creating a Service 680Declaring the Service Provider Interface 681Creating a Service Locator 682Invoking from a Consumer 684Adding a Service Provider 685Reviewing Directives and Services 686Discovering Modules 687Identifying Built- in Modules 688Getting Details with java 690Describing with jar 693Learning about Dependencies with jdeps 693Using the -- jdk- internals Flag 695Using Module Files with jmod 696Creating Java Runtimes with jlink 696Reviewing Command- Line Options 697Comparing Types of Modules 700Named Modules 701Automatic Modules 701Unnamed Modules 704Reviewing Module Types 704Migrating an Application 704Determining the Order 705Exploring a Bottom- Up Migration Strategy 706Exploring a Top- Down Migration Strategy 707Splitting a Big Project into Modules 709Failing to Compile with a Cyclic Dependency 709Summary 711Exam Essentials 712Review Questions 713Chapter 13 Concurrency 721Introducing Threads 722Understanding Thread Concurrency 723Creating a Thread 724Distinguishing Thread Types 725Managing a Thread’s Life Cycle 727Polling with Sleep 727Interrupting a Thread 729Creating Threads with the Concurrency API 730Introducing the Single- Thread Executor 730Shutting Down a Thread Executor 731Submitting Tasks 732Waiting for Results 733Scheduling Tasks 737Increasing Concurrency with Pools 739Writing Thread- Safe Code 740Understanding Thread- Safety 740Accessing Data with volatile 741Protecting Data with Atomic Classes 742Improving Access with Synchronized Blocks 744Synchronizing on Methods 746Understanding the Lock Framework 747Orchestrating Tasks with a CyclicBarrier 751Using Concurrent Collections 754Understanding Memory Consistency Errors 754Working with Concurrent Classes 755Obtaining Synchronized Collections 757Identifying Threading Problems 758Understanding Liveness 758Managing Race Conditions 761Working with Parallel Streams 761Creating Parallel Streams 762Performing a Parallel Decomposition 762Processing Parallel Reductions 764Summary 770Exam Essentials 770Review Questions 772Chapter 14 I/o 785Referencing Files and Directories 786Conceptualizing the File System 786Creating a File or Path 789Operating on File and Path 793Using Shared Functionality 793Handling Methods That Declare IOException 797Providing NIO.2 Optional Parameters 797Interacting with NIO.2 Paths 799Creating, Moving, and Deleting Files and Directories 805Comparing Files with isSameFile() and mismatch() 809Introducing I/O Streams 811Understanding I/O Stream Fundamentals 811Learning I/O Stream Nomenclature 812Reading and Writing Files 817Using I/O Streams 817Enhancing with Files 820Combining with newBufferedReader() and newBufferedWriter() 822Reviewing Common Read and Write Methods 823Serializing Data 824Applying the Serializable Interface 825Marking Data transient 827Ensuring That a Class Is Serializable 827Storing Data with ObjectOutputStream and ObjectInputStream 828Understanding the Deserialization Creation Process 830Interacting with Users 832Printing Data to the User 832Reading Input as an I/O Stream 833Closing System Streams 833Acquiring Input with Console 834Working with Advanced APIs 837Manipulating Input Streams 838Discovering File Attributes 840Traversing a Directory Tree 843Searching a Directory 847Review of Key APIs 848Summary 850Exam Essentials 851Review Questions 852Chapter 15 Jdbc 863Introducing Relational Databases and SQL 864Identifying the Structure of a Relational Database 866Writing Basic SQL Statements 867Introducing the Interfaces of JDBC 868Connecting to a Database 870Building a JDBC URL 870Getting a Database Connection 871Working with a PreparedStatement 873Obtaining a PreparedStatement 874Executing a PreparedStatement 875Working with Parameters 878Updating Multiple Records 881Getting Data from a ResultSet 882Reading a ResultSet 882Getting Data for a Column 885Using Bind Variables 887Calling a CallableStatement 887Calling a Procedure without Parameters 888Passing an IN Parameter 889Returning an OUT Parameter 889Working with an INOUT Parameter 890Comparing Callable Statement Parameters 891Using Additional Options 891Controlling Data with Transactions 892Committing and Rolling Back 892Bookmarking with Savepoints 894Reviewing Transaction APIs 895Closing Database Resources 895Summary 897Exam Essentials 898Review Questions 900Appendix Answers to the Review Questions 909Chapter 1: Building Blocks 910Chapter 2: Operators 913Chapter 3: Making Decisions 916Chapter 4: Core APIs 921Chapter 5: Methods 924Chapter 6: Class Design 927Chapter 7: Beyond Classes 932Chapter 8: Lambdas and Functional Interfaces 936Chapter 9: Collections and Generics 939Chapter 10: Streams 942Chapter 11: Exceptions and Localization 945Chapter 12: Modules 949Chapter 13: Concurrency 951Chapter 14: I/o 955Chapter 15: Jdbc 959Index 963