{"product_id":"oca-ocp-java-se-8-programmer-certification-kit-9781119272090","title":"OCA  OCP Java SE 8 Programmer Certification Kit","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003eYour complete certification guide on the path to Oracle Java SE    The Oracle Java SE Certification track now consists of three levels     Associate (OCA), Professional (OCP), and Master (OCM).\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTable of Contents\u003c\/b\u003e\u003cbr\u003e\u003cp\u003e\u003cb\u003eOCA: Oracle Certified Associate Java SE 8 Programmer I Study Guide: Exam 1Z0-808\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIntroduction xxi\u003c\/p\u003e \u003cp\u003eAssessment Test xxxi\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 1 Java Building Blocks 1\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eUnderstanding the Java Class Structure 2\u003c\/p\u003e \u003cp\u003eFields and Methods 2\u003c\/p\u003e \u003cp\u003eComments 4\u003c\/p\u003e \u003cp\u003eClasses vs. Files 5\u003c\/p\u003e \u003cp\u003eWriting a main() Method 6\u003c\/p\u003e \u003cp\u003eUnderstanding Package Declarations and Imports 9\u003c\/p\u003e \u003cp\u003eWildcards 10\u003c\/p\u003e \u003cp\u003eRedundant Imports 11\u003c\/p\u003e \u003cp\u003eNaming Conflicts 12\u003c\/p\u003e \u003cp\u003eCreating a New Package 13\u003c\/p\u003e \u003cp\u003eCode Formatting on the Exam 16\u003c\/p\u003e \u003cp\u003eCreating Objects 16\u003c\/p\u003e \u003cp\u003eConstructors 17\u003c\/p\u003e \u003cp\u003eReading and Writing Object Fields 18\u003c\/p\u003e \u003cp\u003eInstance Initializer Blocks 18\u003c\/p\u003e \u003cp\u003eOrder of Initialization 19\u003c\/p\u003e \u003cp\u003eDistinguishing Between Object References and Primitives 20\u003c\/p\u003e \u003cp\u003ePrimitive Types 20\u003c\/p\u003e \u003cp\u003eReference Types 24\u003c\/p\u003e \u003cp\u003eKey Differences 25\u003c\/p\u003e \u003cp\u003eDeclaring and Initializing Variables 25\u003c\/p\u003e \u003cp\u003eDeclaring Multiple Variables 26\u003c\/p\u003e \u003cp\u003eIdentifiers 27\u003c\/p\u003e \u003cp\u003eUnderstanding Default Initialization of Variables 29\u003c\/p\u003e \u003cp\u003eLocal Variables 29\u003c\/p\u003e \u003cp\u003eInstance and Class Variables 30\u003c\/p\u003e \u003cp\u003eUnderstanding Variable Scope 31\u003c\/p\u003e \u003cp\u003eOrdering Elements in a Class 34\u003c\/p\u003e \u003cp\u003eDestroying Objects 36\u003c\/p\u003e \u003cp\u003eGarbage Collection 36\u003c\/p\u003e \u003cp\u003efinalize() 38\u003c\/p\u003e \u003cp\u003eBenefits of Java 39\u003c\/p\u003e \u003cp\u003eSummary 40\u003c\/p\u003e \u003cp\u003eExam Essentials 41\u003c\/p\u003e \u003cp\u003eReview Questions 42\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 2 Operators and Statements 51\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eUnderstanding Java Operators 52\u003c\/p\u003e \u003cp\u003eWorking with Binary Arithmetic Operators 53\u003c\/p\u003e \u003cp\u003eArithmetic Operators 53\u003c\/p\u003e \u003cp\u003eNumeric Promotion 55\u003c\/p\u003e \u003cp\u003eWorking with Unary Operators 57\u003c\/p\u003e \u003cp\u003eLogical Complement and Negation Operators 57\u003c\/p\u003e \u003cp\u003eIncrement and Decrement Operators 58\u003c\/p\u003e \u003cp\u003eUsing Additional Binary Operators 60\u003c\/p\u003e \u003cp\u003eAssignment Operators 60\u003c\/p\u003e \u003cp\u003eCompound Assignment Operators 62\u003c\/p\u003e \u003cp\u003eRelational Operators 63\u003c\/p\u003e \u003cp\u003eLogical Operators 64\u003c\/p\u003e \u003cp\u003eEquality Operators 65\u003c\/p\u003e \u003cp\u003eUnderstanding Java Statements 66\u003c\/p\u003e \u003cp\u003eThe if-then Statement 67\u003c\/p\u003e \u003cp\u003eThe if-then-else Statement 68\u003c\/p\u003e \u003cp\u003eThe switch Statement 72\u003c\/p\u003e \u003cp\u003eThe while Statement 76\u003c\/p\u003e \u003cp\u003eThe do-while Statement 78\u003c\/p\u003e \u003cp\u003eThe for Statement 80\u003c\/p\u003e \u003cp\u003eUnderstanding Advanced Flow Control 86\u003c\/p\u003e \u003cp\u003eNested Loops 87\u003c\/p\u003e \u003cp\u003eAdding Optional Labels 87\u003c\/p\u003e \u003cp\u003eThe break Statement 88\u003c\/p\u003e \u003cp\u003eThe continue Statement 90\u003c\/p\u003e \u003cp\u003eSummary 92\u003c\/p\u003e \u003cp\u003eExam Essentials 92\u003c\/p\u003e \u003cp\u003eReview Questions 94\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 3 Core Java APIs 101\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eCreating and Manipulating Strings 102\u003c\/p\u003e \u003cp\u003eConcatenation 102\u003c\/p\u003e \u003cp\u003eImmutability 104\u003c\/p\u003e \u003cp\u003eThe String Pool 105\u003c\/p\u003e \u003cp\u003eImportant String Methods 105\u003c\/p\u003e \u003cp\u003eMethod Chaining 110\u003c\/p\u003e \u003cp\u003eUsing the StringBuilder Class 111\u003c\/p\u003e \u003cp\u003eMutability and Chaining 112\u003c\/p\u003e \u003cp\u003eCreating a StringBuilder 113\u003c\/p\u003e \u003cp\u003eImportant StringBuilder Methods 114\u003c\/p\u003e \u003cp\u003eStringBuilder vs. StringBuffer 117\u003c\/p\u003e \u003cp\u003eUnderstanding Equality 117\u003c\/p\u003e \u003cp\u003eUnderstanding Java Arrays 119\u003c\/p\u003e \u003cp\u003eCreating an Array of Primitives 119\u003c\/p\u003e \u003cp\u003eCreating an Array with Reference Variables 121\u003c\/p\u003e \u003cp\u003eUsing an Array 123\u003c\/p\u003e \u003cp\u003eSorting 124\u003c\/p\u003e \u003cp\u003eSearching 125\u003c\/p\u003e \u003cp\u003eVarargs 126\u003c\/p\u003e \u003cp\u003eMultidimensional Arrays 126\u003c\/p\u003e \u003cp\u003eUnderstanding an ArrayList 129\u003c\/p\u003e \u003cp\u003eCreating an ArrayList 129\u003c\/p\u003e \u003cp\u003eUsing an ArrayList 130\u003c\/p\u003e \u003cp\u003eWrapper Classes 134\u003c\/p\u003e \u003cp\u003eAutoboxing 136\u003c\/p\u003e \u003cp\u003eConverting Between array and List 136\u003c\/p\u003e \u003cp\u003eSorting 138\u003c\/p\u003e \u003cp\u003eWorking with Dates and Times 138\u003c\/p\u003e \u003cp\u003eCreating Dates and Times 138\u003c\/p\u003e \u003cp\u003eManipulating Dates and Times 142\u003c\/p\u003e \u003cp\u003eWorking with Periods 145\u003c\/p\u003e \u003cp\u003eFormatting Dates and Times 148\u003c\/p\u003e \u003cp\u003eParsing Dates and Times 151\u003c\/p\u003e \u003cp\u003eSummary 151\u003c\/p\u003e \u003cp\u003eExam Essentials 152\u003c\/p\u003e \u003cp\u003eReview Questions 153\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 4 Methods and Encapsulation 165\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eDesigning Methods 166\u003c\/p\u003e \u003cp\u003eOptional Specifiers 168\u003c\/p\u003e \u003cp\u003eReturn Type 169\u003c\/p\u003e \u003cp\u003eMethod Name 170\u003c\/p\u003e \u003cp\u003eParameter List 171\u003c\/p\u003e \u003cp\u003eOptional Exception List 171\u003c\/p\u003e \u003cp\u003eMethod Body 171\u003c\/p\u003e \u003cp\u003eWorking with Varargs 172\u003c\/p\u003e \u003cp\u003eApplying Access Modifiers 173\u003c\/p\u003e \u003cp\u003ePrivate Access 173\u003c\/p\u003e \u003cp\u003eDefault (Package Private) Access 175\u003c\/p\u003e \u003cp\u003eProtected Access 176\u003c\/p\u003e \u003cp\u003ePublic Access 180\u003c\/p\u003e \u003cp\u003eDesigning Static Methods and Fields 181\u003c\/p\u003e \u003cp\u003eCalling a Static Variable or Method 182\u003c\/p\u003e \u003cp\u003eStatic vs. Instance 183\u003c\/p\u003e \u003cp\u003eStatic Variables 185\u003c\/p\u003e \u003cp\u003eStatic Initialization 186\u003c\/p\u003e \u003cp\u003eStatic Imports 187\u003c\/p\u003e \u003cp\u003ePassing Data Among Methods 188\u003c\/p\u003e \u003cp\u003eOverloading Methods 191\u003c\/p\u003e \u003cp\u003eCreating Constructors 196\u003c\/p\u003e \u003cp\u003eDefault Constructor 197\u003c\/p\u003e \u003cp\u003eOverloading Constructors 199\u003c\/p\u003e \u003cp\u003eFinal Fields 202\u003c\/p\u003e \u003cp\u003eOrder of Initialization 202\u003c\/p\u003e \u003cp\u003eEncapsulating Data 205\u003c\/p\u003e \u003cp\u003eCreating Immutable Classes 207\u003c\/p\u003e \u003cp\u003eWriting Simple Lambdas 208\u003c\/p\u003e \u003cp\u003eLambda Example 209\u003c\/p\u003e \u003cp\u003eLambda Syntax 211\u003c\/p\u003e \u003cp\u003ePredicates 214\u003c\/p\u003e \u003cp\u003eSummary 215\u003c\/p\u003e \u003cp\u003eExam Essentials 216\u003c\/p\u003e \u003cp\u003eReview Questions 218\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 5 Class Design 233\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIntroducing Class Inheritance 234\u003c\/p\u003e \u003cp\u003eExtending a Class 235\u003c\/p\u003e \u003cp\u003eApplying Class Access Modifiers 237\u003c\/p\u003e \u003cp\u003eCreating Java Objects 237\u003c\/p\u003e \u003cp\u003eDefining Constructors 238\u003c\/p\u003e \u003cp\u003eCalling Inherited Class Members 244\u003c\/p\u003e \u003cp\u003eInheriting Methods 246\u003c\/p\u003e \u003cp\u003eInheriting Variables 257\u003c\/p\u003e \u003cp\u003eCreating Abstract Classes 259\u003c\/p\u003e \u003cp\u003eDefining an Abstract Class 260\u003c\/p\u003e \u003cp\u003eCreating a Concrete Class 262\u003c\/p\u003e \u003cp\u003eExtending an Abstract Class 263\u003c\/p\u003e \u003cp\u003eImplementing Interfaces 266\u003c\/p\u003e \u003cp\u003eDefining an Interface 267\u003c\/p\u003e \u003cp\u003eInheriting an Interface 269\u003c\/p\u003e \u003cp\u003eInterface Variables 273\u003c\/p\u003e \u003cp\u003eDefault Interface Methods 274\u003c\/p\u003e \u003cp\u003eStatic Interface Methods 278\u003c\/p\u003e \u003cp\u003eUnderstanding Polymorphism 279\u003c\/p\u003e \u003cp\u003eObject vs. Reference 281\u003c\/p\u003e \u003cp\u003eCasting Objects 282\u003c\/p\u003e \u003cp\u003eVirtual Methods 284\u003c\/p\u003e \u003cp\u003ePolymorphic Parameters 285\u003c\/p\u003e \u003cp\u003ePolymorphism and Method Overriding 287\u003c\/p\u003e \u003cp\u003eSummary 288\u003c\/p\u003e \u003cp\u003eExam Essentials 289\u003c\/p\u003e \u003cp\u003eReview Questions 291\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 6 Exceptions 299\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eUnderstanding Exceptions 300\u003c\/p\u003e \u003cp\u003eThe Role of Exceptions 300\u003c\/p\u003e \u003cp\u003eUnderstanding Exception Types 302\u003c\/p\u003e \u003cp\u003eThrowing an Exception 304\u003c\/p\u003e \u003cp\u003eUsing a try Statement 305\u003c\/p\u003e \u003cp\u003eAdding a finally Block 307\u003c\/p\u003e \u003cp\u003eCatching Various Types of Exceptions 309\u003c\/p\u003e \u003cp\u003eThrowing a Second Exception 311\u003c\/p\u003e \u003cp\u003eRecognizing Common Exception Types 313\u003c\/p\u003e \u003cp\u003eRuntime Exceptions 314\u003c\/p\u003e \u003cp\u003eChecked Exceptions 317\u003c\/p\u003e \u003cp\u003eErrors 317\u003c\/p\u003e \u003cp\u003eCalling Methods That Throw Exceptions 318\u003c\/p\u003e \u003cp\u003eSubclasses 319\u003c\/p\u003e \u003cp\u003ePrinting an Exception 321\u003c\/p\u003e \u003cp\u003eSummary 323\u003c\/p\u003e \u003cp\u003eExam Essentials 324\u003c\/p\u003e \u003cp\u003eReview Questions 325\u003c\/p\u003e \u003cp\u003e\u003cb\u003eAppendix A Answers to Review Questions 333\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eChapter 1: Java Building Blocks 334\u003c\/p\u003e \u003cp\u003eChapter 2: Operators and Statements 336\u003c\/p\u003e \u003cp\u003eChapter 3: Core Java APIs 339\u003c\/p\u003e \u003cp\u003eChapter 4: Methods and Encapsulation 342\u003c\/p\u003e \u003cp\u003eChapter 5: Class Design 346\u003c\/p\u003e \u003cp\u003eChapter 6: Exceptions 349\u003c\/p\u003e \u003cp\u003e\u003cb\u003eAppendix B Study Tips 353\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eStudying for the Test 354\u003c\/p\u003e \u003cp\u003eCreating a Study Plan 354\u003c\/p\u003e \u003cp\u003eCreating and Running Sample Applications 355\u003c\/p\u003e \u003cp\u003eTaking the Test 359\u003c\/p\u003e \u003cp\u003eUnderstanding the Question 359\u003c\/p\u003e \u003cp\u003eApplying Process of Elimination 362\u003c\/p\u003e \u003cp\u003eOptimizing Your Time 364\u003c\/p\u003e \u003cp\u003eGetting a Good Night’s Rest 366\u003c\/p\u003e \u003cp\u003eIndex 367\u003c\/p\u003e \u003cp\u003e\u003cb\u003eOCP: Oracle Certified Professional Java SE 8 Programmer II Study Guide: Exam 1Z0-809\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIntroduction xix\u003c\/p\u003e \u003cp\u003eAssessment Test xxxviii\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 1 Advanced Class Design 1\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eReviewing OCA Concepts 2\u003c\/p\u003e \u003cp\u003eAccess Modifiers 2\u003c\/p\u003e \u003cp\u003eOverloading and Overriding 4\u003c\/p\u003e \u003cp\u003eAbstract Classes 5\u003c\/p\u003e \u003cp\u003eStatic and Final 6\u003c\/p\u003e \u003cp\u003eImports 6\u003c\/p\u003e \u003cp\u003eUsing instance of 7\u003c\/p\u003e \u003cp\u003eUnderstanding Virtual Method Invocation 9\u003c\/p\u003e \u003cp\u003eAnnotating Overridden Methods 11\u003c\/p\u003e \u003cp\u003eCoding equals, hashCode, and toString 13\u003c\/p\u003e \u003cp\u003etoString 13\u003c\/p\u003e \u003cp\u003eequals 15\u003c\/p\u003e \u003cp\u003ehashCode 18\u003c\/p\u003e \u003cp\u003eWorking with Enums 20\u003c\/p\u003e \u003cp\u003eUsing Enums in Switch Statements 21\u003c\/p\u003e \u003cp\u003eAdding Constructors, Fields, and Methods 22\u003c\/p\u003e \u003cp\u003eCreating Nested Classes 24\u003c\/p\u003e \u003cp\u003eMember Inner Classes 25\u003c\/p\u003e \u003cp\u003eLocal Inner Classes 27\u003c\/p\u003e \u003cp\u003eAnonymous Inner Classes 29\u003c\/p\u003e \u003cp\u003eStatic Nested Classes 31\u003c\/p\u003e \u003cp\u003eSummary 33\u003c\/p\u003e \u003cp\u003eExam Essentials 34\u003c\/p\u003e \u003cp\u003eReview Questions 36\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 2 Design Patterns and Principles 47\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eDesigning an Interface 48\u003c\/p\u003e \u003cp\u003ePurpose of an Interface 51\u003c\/p\u003e \u003cp\u003eIntroducing Functional Programming 52\u003c\/p\u003e \u003cp\u003eDefining a Functional Interface 53\u003c\/p\u003e \u003cp\u003eImplementing Functional Interfaces with Lambdas 55\u003c\/p\u003e \u003cp\u003eApplying the Predicate Interface 60\u003c\/p\u003e \u003cp\u003eImplementing Polymorphism 61\u003c\/p\u003e \u003cp\u003eDistinguishing between an Object and a Reference 63\u003c\/p\u003e \u003cp\u003eCasting Object References 64\u003c\/p\u003e \u003cp\u003eUnderstanding Design Principles 66\u003c\/p\u003e \u003cp\u003eEncapsulating Data 66\u003c\/p\u003e \u003cp\u003eCreating JavaBeans 69\u003c\/p\u003e \u003cp\u003eApplying the Is]a Relationship 71\u003c\/p\u003e \u003cp\u003eApplying the Has]a Relationship 73\u003c\/p\u003e \u003cp\u003eComposing Objects 74\u003c\/p\u003e \u003cp\u003eWorking with Design Patterns 75\u003c\/p\u003e \u003cp\u003eApplying the Singleton Pattern 76\u003c\/p\u003e \u003cp\u003eCreating Immutable Objects 82\u003c\/p\u003e \u003cp\u003eUsing the Builder Pattern 86\u003c\/p\u003e \u003cp\u003eCreating Objects with the Factory Pattern 89\u003c\/p\u003e \u003cp\u003eSummary 93\u003c\/p\u003e \u003cp\u003eExam Essentials 93\u003c\/p\u003e \u003cp\u003eReview Questions 95\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 3 Generics and Collections 103\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eReviewing OCA Collections 104\u003c\/p\u003e \u003cp\u003eArray and ArrayList 104\u003c\/p\u003e \u003cp\u003eSearching and Sorting 105\u003c\/p\u003e \u003cp\u003eWrapper Classes and Autoboxing 106\u003c\/p\u003e \u003cp\u003eThe Diamond Operator 107\u003c\/p\u003e \u003cp\u003eWorking with Generics 108\u003c\/p\u003e \u003cp\u003eGeneric Classes 109\u003c\/p\u003e \u003cp\u003eGeneric Interfaces 112\u003c\/p\u003e \u003cp\u003eGeneric Methods 114\u003c\/p\u003e \u003cp\u003eInteracting with Legacy Code 114\u003c\/p\u003e \u003cp\u003eBounds 117\u003c\/p\u003e \u003cp\u003ePutting It All Together 122\u003c\/p\u003e \u003cp\u003eUsing Lists, Sets, Maps, and Queues 124\u003c\/p\u003e \u003cp\u003eCommon Collections Methods 125\u003c\/p\u003e \u003cp\u003eUsing the List Interface 127\u003c\/p\u003e \u003cp\u003eUsing the Set Interface 132\u003c\/p\u003e \u003cp\u003eUsing the Queue Interface 134\u003c\/p\u003e \u003cp\u003eMap 138\u003c\/p\u003e \u003cp\u003eComparing Collection Types 140\u003c\/p\u003e \u003cp\u003eComparator vs. Comparable 143\u003c\/p\u003e \u003cp\u003eComparable 143\u003c\/p\u003e \u003cp\u003eComparator 146\u003c\/p\u003e \u003cp\u003eSearching and Sorting 150\u003c\/p\u003e \u003cp\u003eAdditions in Java 8 152\u003c\/p\u003e \u003cp\u003eUsing Method References 152\u003c\/p\u003e \u003cp\u003eRemoving Conditionally 154\u003c\/p\u003e \u003cp\u003eUpdating All Elements 155\u003c\/p\u003e \u003cp\u003eLooping through a Collection 155\u003c\/p\u003e \u003cp\u003eUsing New Java 8 Map APIs 155\u003c\/p\u003e \u003cp\u003eSummary 159\u003c\/p\u003e \u003cp\u003eExam Essentials 161\u003c\/p\u003e \u003cp\u003eReview Questions 162\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 4 Functional Programming 171\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eUsing Variables in Lambdas 172\u003c\/p\u003e \u003cp\u003eWorking with Built-In Functional Interfaces 173\u003c\/p\u003e \u003cp\u003eImplementing Supplier 174\u003c\/p\u003e \u003cp\u003eImplementing Consumer and BiConsumer 175\u003c\/p\u003e \u003cp\u003eImplementing Predicate and BiPredicate 177\u003c\/p\u003e \u003cp\u003eImplementing Function and BiFunction 178\u003c\/p\u003e \u003cp\u003eImplementing UnaryOperator and BinaryOperator 180\u003c\/p\u003e \u003cp\u003eChecking Functional Interfaces 181\u003c\/p\u003e \u003cp\u003eReturning an Optional 182\u003c\/p\u003e \u003cp\u003eUsing Streams 185\u003c\/p\u003e \u003cp\u003eCreating Stream Sources 188\u003c\/p\u003e \u003cp\u003eUsing Common Terminal Operations 189\u003c\/p\u003e \u003cp\u003eUsing Common Intermediate Operations 196\u003c\/p\u003e \u003cp\u003ePutting Together the Pipeline 200\u003c\/p\u003e \u003cp\u003ePrinting a Stream 204\u003c\/p\u003e \u003cp\u003eWorking with Primitives 205\u003c\/p\u003e \u003cp\u003eCreating Primitive Streams 205\u003c\/p\u003e \u003cp\u003eUsing Optional with Primitive Streams 208\u003c\/p\u003e \u003cp\u003eSummarizing Statistics 210\u003c\/p\u003e \u003cp\u003eLearning the Functional Interfaces for Primitives 210\u003c\/p\u003e \u003cp\u003eWorking with Advanced Stream Pipeline Concepts 213\u003c\/p\u003e \u003cp\u003eLinking Streams to the Underlying Data 213\u003c\/p\u003e \u003cp\u003eChaining Optionals 214\u003c\/p\u003e \u003cp\u003eCollecting Results 217\u003c\/p\u003e \u003cp\u003eSummary 223\u003c\/p\u003e \u003cp\u003eExam Essentials 224\u003c\/p\u003e \u003cp\u003eReview Questions 226\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 5 Dates, Strings, and Localization 233\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eWorking with Dates and Times 234\u003c\/p\u003e \u003cp\u003eCreating Dates and Times 235\u003c\/p\u003e \u003cp\u003eManipulating Dates and Times 241\u003c\/p\u003e \u003cp\u003eWorking with Periods 244\u003c\/p\u003e \u003cp\u003eWorking with Durations 247\u003c\/p\u003e \u003cp\u003eAccounting for Daylight Savings Time 251\u003c\/p\u003e \u003cp\u003eReviewing the String class 253\u003c\/p\u003e \u003cp\u003eAdding Internationalization and Localization 255\u003c\/p\u003e \u003cp\u003ePicking a Locale 256\u003c\/p\u003e \u003cp\u003eUsing a Resource Bundle 258\u003c\/p\u003e \u003cp\u003eFormatting Numbers 267\u003c\/p\u003e \u003cp\u003eFormatting Dates and Times 270\u003c\/p\u003e \u003cp\u003eSummary 273\u003c\/p\u003e \u003cp\u003eExam Essentials 274\u003c\/p\u003e \u003cp\u003eReview Questions 276\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 6 Exceptions and Assertions 283\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eReviewing Exceptions 284\u003c\/p\u003e \u003cp\u003eExceptions Terminology 284\u003c\/p\u003e \u003cp\u003eCategories of Exceptions 285\u003c\/p\u003e \u003cp\u003eExceptions on the OCP 286\u003c\/p\u003e \u003cp\u003eTry Statement 288\u003c\/p\u003e \u003cp\u003eThrow vs. Throws 289\u003c\/p\u003e \u003cp\u003eCreating Custom Exceptions 289\u003c\/p\u003e \u003cp\u003eUsing Multi-catch 291\u003c\/p\u003e \u003cp\u003eUsing Try-With-Resources 296\u003c\/p\u003e \u003cp\u003eTry-With-Resources Basics 298\u003c\/p\u003e \u003cp\u003eAutoCloseable 300\u003c\/p\u003e \u003cp\u003eSuppressed Exceptions 302\u003c\/p\u003e \u003cp\u003ePutting It Together 305\u003c\/p\u003e \u003cp\u003eRethrowing Exceptions 305\u003c\/p\u003e \u003cp\u003eWorking with Assertions 308\u003c\/p\u003e \u003cp\u003eThe assert Statement 308\u003c\/p\u003e \u003cp\u003eEnabling Assertions 309\u003c\/p\u003e \u003cp\u003eUsing Assertions 310\u003c\/p\u003e \u003cp\u003eSummary 314\u003c\/p\u003e \u003cp\u003eExam Essentials 315\u003c\/p\u003e \u003cp\u003eReview Questions 316\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 7 Concurrency 325\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIntroducing Threads 327\u003c\/p\u003e \u003cp\u003eDistinguishing Thread Types 328\u003c\/p\u003e \u003cp\u003eUnderstanding Thread Concurrency 328\u003c\/p\u003e \u003cp\u003eIntroducing Runnable 330\u003c\/p\u003e \u003cp\u003eCreating a Thread 331\u003c\/p\u003e \u003cp\u003ePolling with Sleep 334\u003c\/p\u003e \u003cp\u003eCreating Threads with the ExecutorService 335\u003c\/p\u003e \u003cp\u003eIntroducing the Single-Thread Executor 335\u003c\/p\u003e \u003cp\u003eShutting Down a Thread Executor 337\u003c\/p\u003e \u003cp\u003eSubmitting Tasks 338\u003c\/p\u003e \u003cp\u003eWaiting for Results 340\u003c\/p\u003e \u003cp\u003eScheduling Tasks 345\u003c\/p\u003e \u003cp\u003eIncreasing Concurrency with Pools 348\u003c\/p\u003e \u003cp\u003eSynchronizing Data Access 350\u003c\/p\u003e \u003cp\u003eProtecting Data with Atomic Classes 352\u003c\/p\u003e \u003cp\u003eImproving Access with Synchronized Blocks 354\u003c\/p\u003e \u003cp\u003eSynchronizing Methods 356\u003c\/p\u003e \u003cp\u003eUnderstanding the Cost of Synchronization 357\u003c\/p\u003e \u003cp\u003eUsing Concurrent Collections 358\u003c\/p\u003e \u003cp\u003eIntroducing Concurrent Collections 358\u003c\/p\u003e \u003cp\u003eUnderstanding Memory Consistency Errors 359\u003c\/p\u003e \u003cp\u003eWorking with Concurrent Classes 360\u003c\/p\u003e \u003cp\u003eObtaining Synchronized Collections 365\u003c\/p\u003e \u003cp\u003eWorking with Parallel Streams 366\u003c\/p\u003e \u003cp\u003eCreating Parallel Streams 366\u003c\/p\u003e \u003cp\u003eProcessing Tasks in Parallel 367\u003c\/p\u003e \u003cp\u003eProcessing Parallel Reductions 372\u003c\/p\u003e \u003cp\u003eManaging Concurrent Processes 377\u003c\/p\u003e \u003cp\u003eCreating a CyclicBarrier 377\u003c\/p\u003e \u003cp\u003eApplying the Fork\/Join Framework 381\u003c\/p\u003e \u003cp\u003eIdentifying Threading Problems 387\u003c\/p\u003e \u003cp\u003eUnderstanding Liveness 387\u003c\/p\u003e \u003cp\u003eManaging Race Conditions 391\u003c\/p\u003e \u003cp\u003eSummary 392\u003c\/p\u003e \u003cp\u003eExam Essentials 393\u003c\/p\u003e \u003cp\u003eReview Questions 394\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 8 IO 405\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eUnderstanding Files and Directories 406\u003c\/p\u003e \u003cp\u003eConceptualizing the File System 406\u003c\/p\u003e \u003cp\u003eIntroducing the File Class 407\u003c\/p\u003e \u003cp\u003eIntroducing Streams 411\u003c\/p\u003e \u003cp\u003eStream Fundamentals 411\u003c\/p\u003e \u003cp\u003eStream Nomenclature 412\u003c\/p\u003e \u003cp\u003eCommon Stream Operations 418\u003c\/p\u003e \u003cp\u003eWorking with Streams 420\u003c\/p\u003e \u003cp\u003eThe FileInputStream and FileOutputStream Classes 420\u003c\/p\u003e \u003cp\u003eThe FileReader and FileWriter classes 424\u003c\/p\u003e \u003cp\u003eThe ObjectInputStream and ObjectOutputStream Classes 426\u003c\/p\u003e \u003cp\u003eThe PrintStream and PrintWriter Classes 432\u003c\/p\u003e \u003cp\u003eReview of Stream Classes 435\u003c\/p\u003e \u003cp\u003eInteracting with Users 437\u003c\/p\u003e \u003cp\u003eThe Old Way 437\u003c\/p\u003e \u003cp\u003eThe New Way 438\u003c\/p\u003e \u003cp\u003eSummary 442\u003c\/p\u003e \u003cp\u003eExam Essentials 443\u003c\/p\u003e \u003cp\u003eReview Questions 445\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 9 NIO.2 453\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIntroducing NIO.2 454\u003c\/p\u003e \u003cp\u003eIntroducing Path 455\u003c\/p\u003e \u003cp\u003eCreating Paths 456\u003c\/p\u003e \u003cp\u003eInteracting with Paths and Files 460\u003c\/p\u003e \u003cp\u003eProviding Optional Arguments 461\u003c\/p\u003e \u003cp\u003eUsing Path Objects 462\u003c\/p\u003e \u003cp\u003eInteracting with Files 471\u003c\/p\u003e \u003cp\u003eUnderstanding File Attributes 478\u003c\/p\u003e \u003cp\u003eDiscovering Basic File Attributes 478\u003c\/p\u003e \u003cp\u003eImproving Access with Views 483\u003c\/p\u003e \u003cp\u003ePresenting the New Stream Methods 487\u003c\/p\u003e \u003cp\u003eConceptualizing Directory Walking 487\u003c\/p\u003e \u003cp\u003eWalking a Directory 488\u003c\/p\u003e \u003cp\u003eSearching a Directory 490\u003c\/p\u003e \u003cp\u003eListing Directory Contents 491\u003c\/p\u003e \u003cp\u003ePrinting File Contents 492\u003c\/p\u003e \u003cp\u003eComparing Legacy File and NIO.2 Methods 494\u003c\/p\u003e \u003cp\u003eSummary 495\u003c\/p\u003e \u003cp\u003eExam Essentials 495\u003c\/p\u003e \u003cp\u003eReview Questions 497\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 10 JDBC 505\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIntroducing Relational Databases and SQL 507\u003c\/p\u003e \u003cp\u003eIdentifying the Structure of a Relational Database 508\u003c\/p\u003e \u003cp\u003eWriting Basic SQL Statements 510\u003c\/p\u003e \u003cp\u003eIntroducing the Interfaces of JDBC 511\u003c\/p\u003e \u003cp\u003eConnecting to a Database 513\u003c\/p\u003e \u003cp\u003eBuilding a JDBC URL 513\u003c\/p\u003e \u003cp\u003eGetting a Database Connection 515\u003c\/p\u003e \u003cp\u003eObtaining a Statement 518\u003c\/p\u003e \u003cp\u003eChoosing a ResultSet Type 519\u003c\/p\u003e \u003cp\u003eChoosing a ResultSet Concurrency Mode 520\u003c\/p\u003e \u003cp\u003eExecuting a Statement 520\u003c\/p\u003e \u003cp\u003eGetting Data from a ResultSet 524\u003c\/p\u003e \u003cp\u003eReading a ResultSet 524\u003c\/p\u003e \u003cp\u003eGetting Data for a Column 526\u003c\/p\u003e \u003cp\u003eScrolling ResultSet 529\u003c\/p\u003e \u003cp\u003eClosing Database Resources 533\u003c\/p\u003e \u003cp\u003eDealing with Exceptions 535\u003c\/p\u003e \u003cp\u003eSummary 536\u003c\/p\u003e \u003cp\u003eExam Essentials 537\u003c\/p\u003e \u003cp\u003eReview Questions 539\u003c\/p\u003e \u003cp\u003e\u003cb\u003eAppendix A Answers to Review Questions 547\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eChapter 1: Advanced Class Design 548\u003c\/p\u003e \u003cp\u003eChapter 2: Design Patterns and Principles 550\u003c\/p\u003e \u003cp\u003eChapter 3: Generics and Collections 553\u003c\/p\u003e \u003cp\u003eChapter 4: Functional Programming 556\u003c\/p\u003e \u003cp\u003eChapter 5: Dates, Strings, and Localization 558\u003c\/p\u003e \u003cp\u003eChapter 6: Exceptions and Assertions 560\u003c\/p\u003e \u003cp\u003eChapter 7: Concurrency 561\u003c\/p\u003e \u003cp\u003eChapter 8: IO 565\u003c\/p\u003e \u003cp\u003eChapter 9: NIO.2 568\u003c\/p\u003e \u003cp\u003eChapter 10: JDBC 571\u003c\/p\u003e \u003cp\u003e\u003cb\u003eAppendix B Study Tips 575\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eStudying for the Test 576\u003c\/p\u003e \u003cp\u003eCreating a Study Plan 576\u003c\/p\u003e \u003cp\u003eComparing Previous Exams 578\u003c\/p\u003e \u003cp\u003eCreating and Running Sample Applications 579\u003c\/p\u003e \u003cp\u003eTaking the Test 582\u003c\/p\u003e \u003cp\u003eUnderstanding the Question 582\u003c\/p\u003e \u003cp\u003eTaking Advantage of the Exam Software 587\u003c\/p\u003e \u003cp\u003eUsing the Provided Writing Material 587\u003c\/p\u003e \u003cp\u003eChoosing the Best Answer 590\u003c\/p\u003e \u003cp\u003eOptimizing Your Time 591\u003c\/p\u003e \u003cp\u003eGetting a Good Night’s Rest 593\u003c\/p\u003e \u003cp\u003e\u003cb\u003eAppendix C Upgrading from Java 6 or Earlier 595\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eEnhancing the Java Language 596\u003c\/p\u003e \u003cp\u003eUsing the Diamond Operator 596\u003c\/p\u003e \u003cp\u003eCreating Literals 597\u003c\/p\u003e \u003cp\u003eMaking Decisions with Switch 598\u003c\/p\u003e \u003cp\u003eFormatting and Parsing 603\u003c\/p\u003e \u003cp\u003eUsing DecimalFormat Flags 603\u003c\/p\u003e \u003cp\u003eUsing DateFormat 603\u003c\/p\u003e \u003cp\u003eFormatting 604\u003c\/p\u003e \u003cp\u003eParsing 605\u003c\/p\u003e \u003cp\u003eCustom Date Formats 606\u003c\/p\u003e \u003cp\u003eApplying Locks 607\u003c\/p\u003e \u003cp\u003eUnderstanding the Lock Framework 607\u003c\/p\u003e \u003cp\u003eUsing a ReentrantLock 610\u003c\/p\u003e \u003cp\u003eUnderstanding Read\/Write Locks 614\u003c\/p\u003e \u003cp\u003eUsing a ReentrantReadWriteLock 615\u003c\/p\u003e \u003cp\u003eWorking with Directories 617\u003c\/p\u003e \u003cp\u003eTraversing Directories 618\u003c\/p\u003e \u003cp\u003eMonitoring a Directory for Changes 625\u003c\/p\u003e \u003cp\u003eSummary 633\u003c\/p\u003e \u003cp\u003eExam Essentials 633\u003c\/p\u003e \u003cp\u003eReview Questions 635\u003c\/p\u003e \u003cp\u003eAnswers to Practice Test 645\u003c\/p\u003e \u003cp\u003eIndex 649\u003c\/p\u003e \u003cp\u003e\u003cb\u003e \u003c\/b\u003e\u003c\/p\u003e","brand":"John Wiley \u0026 Sons Inc","offers":[{"title":"Default Title","offer_id":48866391097687,"sku":"9781119272090","price":52.5,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9781119272090.jpg?v=1722278427","url":"https:\/\/bookcurl.com\/products\/oca-ocp-java-se-8-programmer-certification-kit-9781119272090","provider":"Book Curl","version":"1.0","type":"link"}