Atjaunināt sīkdatņu piekrišanu

E-grāmata: OCP Oracle Certified Professional Java SE 17 Developer Study Guide: Exam 1Z0-829

4.89/5 (18 ratings by Goodreads)
(CodeRanch), (Selikoff Solutions, LLC)
  • Formāts: EPUB+DRM
  • Sērija : Sybex Study Guide
  • Izdošanas datums: 24-Mar-2022
  • Izdevniecība: Sybex Inc.,U.S.
  • Valoda: eng
  • ISBN-13: 9781119864592
Citas grāmatas par šo tēmu:
  • Formāts - EPUB+DRM
  • Cena: 59,48 €*
  • * ši ir gala cena, t.i., netiek piemērotas nekādas papildus atlaides
  • Ielikt grozā
  • Pievienot vēlmju sarakstam
  • Šī e-grāmata paredzēta tikai personīgai lietošanai. E-grāmatas nav iespējams atgriezt un nauda par iegādātajām e-grāmatām netiek atmaksāta.
  • Formāts: EPUB+DRM
  • Sērija : Sybex Study Guide
  • Izdošanas datums: 24-Mar-2022
  • Izdevniecība: Sybex Inc.,U.S.
  • Valoda: eng
  • ISBN-13: 9781119864592
Citas grāmatas par šo tēmu:

DRM restrictions

  • Kopēšana (kopēt/ievietot):

    nav atļauts

  • Drukāšana:

    nav atļauts

  • Lietošana:

    Digitālo tiesību pārvaldība (Digital Rights Management (DRM))
    Izdevējs ir piegādājis šo grāmatu šifrētā veidā, kas nozīmē, ka jums ir jāinstalē bezmaksas programmatūra, lai to atbloķētu un lasītu. Lai lasītu šo e-grāmatu, jums ir jāizveido Adobe ID. Vairāk informācijas šeit. E-grāmatu var lasīt un lejupielādēt līdz 6 ierīcēm (vienam lietotājam ar vienu un to pašu Adobe ID).

    Nepieciešamā programmatūra
    Lai lasītu šo e-grāmatu mobilajā ierīcē (tālrunī vai planšetdatorā), jums būs jāinstalē šī bezmaksas lietotne: PocketBook Reader (iOS / Android)

    Lai lejupielādētu un lasītu šo e-grāmatu datorā vai Mac datorā, jums ir nepieciešamid Adobe Digital Editions (šī ir bezmaksas lietotne, kas īpaši izstrādāta e-grāmatām. Tā nav tas pats, kas Adobe Reader, kas, iespējams, jau ir jūsu datorā.)

    Jūs nevarat lasīt šo e-grāmatu, izmantojot Amazon Kindle.

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.

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

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