{"product_id":"oca-ocp-java-se-8-programmer-certification-kit-exam-1z0-808-and-exam-1z0-809-1st-ed","title":"OCA\/OCP Java SE 8 Programmer Certification Kit: Exam 1Z0-808 and Exam 1Z0-809 (1ST ed.)","description":"\n\u003ctable align=\"center\" border=\"0\" cellpadding=\"2\" cellspacing=\"0\" width=\"100%\"\u003e\n\u003ctr\u003e\n\u003ctd class=\"productDetailSmallElements\"\u003e\n\u003cp\u003e\n\u003cstrong\u003eTable of Contents\u003c\/strong\u003e:\u003cbr\u003e\n\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eOCA: Oracle Certified Associate Java SE 8 Programmer I Study Guide: Exam 1Z0-808\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003eIntroduction xxi\u003c\/p\u003e\n\u003cp\u003eAssessment Test xxxi\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eChapter 1 Java Building Blocks 1\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003eUnderstanding the Java Class Structure 2\u003c\/p\u003e\n\u003cp\u003eFields and Methods 2\u003c\/p\u003e\n\u003cp\u003eComments 4\u003c\/p\u003e\n\u003cp\u003eClasses vs. Files 5\u003c\/p\u003e\n\u003cp\u003eWriting a main() Method 6\u003c\/p\u003e\n\u003cp\u003eUnderstanding Package Declarations and Imports 9\u003c\/p\u003e\n\u003cp\u003eWildcards 10\u003c\/p\u003e\n\u003cp\u003eRedundant Imports 11\u003c\/p\u003e\n\u003cp\u003eNaming Conflicts 12\u003c\/p\u003e\n\u003cp\u003eCreating a New Package 13\u003c\/p\u003e\n\u003cp\u003eCode Formatting on the Exam 16\u003c\/p\u003e\n\u003cp\u003eCreating Objects 16\u003c\/p\u003e\n\u003cp\u003eConstructors 17\u003c\/p\u003e\n\u003cp\u003eReading and Writing Object Fields 18\u003c\/p\u003e\n\u003cp\u003eInstance Initializer Blocks 18\u003c\/p\u003e\n\u003cp\u003eOrder of Initialization 19\u003c\/p\u003e\n\u003cp\u003eDistinguishing Between Object References and Primitives 20\u003c\/p\u003e\n\u003cp\u003ePrimitive Types 20\u003c\/p\u003e\n\u003cp\u003eReference Types 24\u003c\/p\u003e\n\u003cp\u003eKey Differences 25\u003c\/p\u003e\n\u003cp\u003eDeclaring and Initializing Variables 25\u003c\/p\u003e\n\u003cp\u003eDeclaring Multiple Variables 26\u003c\/p\u003e\n\u003cp\u003eIdentifiers 27\u003c\/p\u003e\n\u003cp\u003eUnderstanding Default Initialization of Variables 29\u003c\/p\u003e\n\u003cp\u003eLocal Variables 29\u003c\/p\u003e\n\u003cp\u003eInstance and Class Variables 30\u003c\/p\u003e\n\u003cp\u003eUnderstanding Variable Scope 31\u003c\/p\u003e\n\u003cp\u003eOrdering Elements in a Class 34\u003c\/p\u003e\n\u003cp\u003eDestroying Objects 36\u003c\/p\u003e\n\u003cp\u003eGarbage Collection 36\u003c\/p\u003e\n\u003cp\u003efinalize() 38\u003c\/p\u003e\n\u003cp\u003eBenefits of Java 39\u003c\/p\u003e\n\u003cp\u003eSummary 40\u003c\/p\u003e\n\u003cp\u003eExam Essentials 41\u003c\/p\u003e\n\u003cp\u003eReview Questions 42\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eChapter 2 Operators and Statements 51\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003eUnderstanding Java Operators 52\u003c\/p\u003e\n\u003cp\u003eWorking with Binary Arithmetic Operators 53\u003c\/p\u003e\n\u003cp\u003eArithmetic Operators 53\u003c\/p\u003e\n\u003cp\u003eNumeric Promotion 55\u003c\/p\u003e\n\u003cp\u003eWorking with Unary Operators 57\u003c\/p\u003e\n\u003cp\u003eLogical Complement and Negation Operators 57\u003c\/p\u003e\n\u003cp\u003eIncrement and Decrement Operators 58\u003c\/p\u003e\n\u003cp\u003eUsing Additional Binary Operators 60\u003c\/p\u003e\n\u003cp\u003eAssignment Operators 60\u003c\/p\u003e\n\u003cp\u003eCompound Assignment Operators 62\u003c\/p\u003e\n\u003cp\u003eRelational Operators 63\u003c\/p\u003e\n\u003cp\u003eLogical Operators 64\u003c\/p\u003e\n\u003cp\u003eEquality Operators 65\u003c\/p\u003e\n\u003cp\u003eUnderstanding Java Statements 66\u003c\/p\u003e\n\u003cp\u003eThe if-then Statement 67\u003c\/p\u003e\n\u003cp\u003eThe if-then-else Statement 68\u003c\/p\u003e\n\u003cp\u003eThe switch Statement 72\u003c\/p\u003e\n\u003cp\u003eThe while Statement 76\u003c\/p\u003e\n\u003cp\u003eThe do-while Statement 78\u003c\/p\u003e\n\u003cp\u003eThe for Statement 80\u003c\/p\u003e\n\u003cp\u003eUnderstanding Advanced Flow Control 86\u003c\/p\u003e\n\u003cp\u003eNested Loops 87\u003c\/p\u003e\n\u003cp\u003eAdding Optional Labels 87\u003c\/p\u003e\n\u003cp\u003eThe break Statement 88\u003c\/p\u003e\n\u003cp\u003eThe continue Statement 90\u003c\/p\u003e\n\u003cp\u003eSummary 92\u003c\/p\u003e\n\u003cp\u003eExam Essentials 92\u003c\/p\u003e\n\u003cp\u003eReview Questions 94\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eChapter 3 Core Java APIs 101\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003eCreating and Manipulating Strings 102\u003c\/p\u003e\n\u003cp\u003eConcatenation 102\u003c\/p\u003e\n\u003cp\u003eImmutability 104\u003c\/p\u003e\n\u003cp\u003eThe String Pool 105\u003c\/p\u003e\n\u003cp\u003eImportant String Methods 105\u003c\/p\u003e\n\u003cp\u003eMethod Chaining 110\u003c\/p\u003e\n\u003cp\u003eUsing the StringBuilder Class 111\u003c\/p\u003e\n\u003cp\u003eMutability and Chaining 112\u003c\/p\u003e\n\u003cp\u003eCreating a StringBuilder 113\u003c\/p\u003e\n\u003cp\u003eImportant StringBuilder Methods 114\u003c\/p\u003e\n\u003cp\u003eStringBuilder vs. StringBuffer 117\u003c\/p\u003e\n\u003cp\u003eUnderstanding Equality 117\u003c\/p\u003e\n\u003cp\u003eUnderstanding Java Arrays 119\u003c\/p\u003e\n\u003cp\u003eCreating an Array of Primitives 119\u003c\/p\u003e\n\u003cp\u003eCreating an Array with Reference Variables 121\u003c\/p\u003e\n\u003cp\u003eUsing an Array 123\u003c\/p\u003e\n\u003cp\u003eSorting 124\u003c\/p\u003e\n\u003cp\u003eSearching 125\u003c\/p\u003e\n\u003cp\u003eVarargs 126\u003c\/p\u003e\n\u003cp\u003eMultidimensional Arrays 126\u003c\/p\u003e\n\u003cp\u003eUnderstanding an ArrayList 129\u003c\/p\u003e\n\u003cp\u003eCreating an ArrayList 129\u003c\/p\u003e\n\u003cp\u003eUsing an ArrayList 130\u003c\/p\u003e\n\u003cp\u003eWrapper Classes 134\u003c\/p\u003e\n\u003cp\u003eAutoboxing 136\u003c\/p\u003e\n\u003cp\u003eConverting Between array and List 136\u003c\/p\u003e\n\u003cp\u003eSorting 138\u003c\/p\u003e\n\u003cp\u003eWorking with Dates and Times 138\u003c\/p\u003e\n\u003cp\u003eCreating Dates and Times 138\u003c\/p\u003e\n\u003cp\u003eManipulating Dates and Times 142\u003c\/p\u003e\n\u003cp\u003eWorking with Periods 145\u003c\/p\u003e\n\u003cp\u003eFormatting Dates and Times 148\u003c\/p\u003e\n\u003cp\u003eParsing Dates and Times 151\u003c\/p\u003e\n\u003cp\u003eSummary 151\u003c\/p\u003e\n\u003cp\u003eExam Essentials 152\u003c\/p\u003e\n\u003cp\u003eReview Questions 153\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eChapter 4 Methods and Encapsulation 165\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003eDesigning Methods 166\u003c\/p\u003e\n\u003cp\u003eOptional Specifiers 168\u003c\/p\u003e\n\u003cp\u003eReturn Type 169\u003c\/p\u003e\n\u003cp\u003eMethod Name 170\u003c\/p\u003e\n\u003cp\u003eParameter List 171\u003c\/p\u003e\n\u003cp\u003eOptional Exception List 171\u003c\/p\u003e\n\u003cp\u003eMethod Body 171\u003c\/p\u003e\n\u003cp\u003eWorking with Varargs 172\u003c\/p\u003e\n\u003cp\u003eApplying Access Modifiers 173\u003c\/p\u003e\n\u003cp\u003ePrivate Access 173\u003c\/p\u003e\n\u003cp\u003eDefault (Package Private) Access 175\u003c\/p\u003e\n\u003cp\u003eProtected Access 176\u003c\/p\u003e\n\u003cp\u003ePublic Access 180\u003c\/p\u003e\n\u003cp\u003eDesigning Static Methods and Fields 181\u003c\/p\u003e\n\u003cp\u003eCalling a Static Variable or Method 182\u003c\/p\u003e\n\u003cp\u003eStatic vs. Instance 183\u003c\/p\u003e\n\u003cp\u003eStatic Variables 185\u003c\/p\u003e\n\u003cp\u003eStatic Initialization 186\u003c\/p\u003e\n\u003cp\u003eStatic Imports 187\u003c\/p\u003e\n\u003cp\u003ePassing Data Among Methods 188\u003c\/p\u003e\n\u003cp\u003eOverloading Methods 191\u003c\/p\u003e\n\u003cp\u003eCreating Constructors 196\u003c\/p\u003e\n\u003cp\u003eDefault Constructor 197\u003c\/p\u003e\n\u003cp\u003eOverloading Constructors 199\u003c\/p\u003e\n\u003cp\u003eFinal Fields 202\u003c\/p\u003e\n\u003cp\u003eOrder of Initialization 202\u003c\/p\u003e\n\u003cp\u003eEncapsulating Data 205\u003c\/p\u003e\n\u003cp\u003eCreating Immutable Classes 207\u003c\/p\u003e\n\u003cp\u003eWriting Simple Lambdas 208\u003c\/p\u003e\n\u003cp\u003eLambda Example 209\u003c\/p\u003e\n\u003cp\u003eLambda Syntax 211\u003c\/p\u003e\n\u003cp\u003ePredicates 214\u003c\/p\u003e\n\u003cp\u003eSummary 215\u003c\/p\u003e\n\u003cp\u003eExam Essentials 216\u003c\/p\u003e\n\u003cp\u003eReview Questions 218\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eChapter 5 Class Design 233\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003eIntroducing Class Inheritance 234\u003c\/p\u003e\n\u003cp\u003eExtending a Class 235\u003c\/p\u003e\n\u003cp\u003eApplying Class Access Modifiers 237\u003c\/p\u003e\n\u003cp\u003eCreating Java Objects 237\u003c\/p\u003e\n\u003cp\u003eDefining Constructors 238\u003c\/p\u003e\n\u003cp\u003eCalling Inherited Class Members 244\u003c\/p\u003e\n\u003cp\u003eInheriting Methods 246\u003c\/p\u003e\n\u003cp\u003eInheriting Variables 257\u003c\/p\u003e\n\u003cp\u003eCreating Abstract Classes 259\u003c\/p\u003e\n\u003cp\u003eDefining an Abstract Class 260\u003c\/p\u003e\n\u003cp\u003eCreating a Concrete Class 262\u003c\/p\u003e\n\u003cp\u003eExtending an Abstract Class 263\u003c\/p\u003e\n\u003cp\u003eImplementing Interfaces 266\u003c\/p\u003e\n\u003cp\u003eDefining an Interface 267\u003c\/p\u003e\n\u003cp\u003eInheriting an Interface 269\u003c\/p\u003e\n\u003cp\u003eInterface Variables 273\u003c\/p\u003e\n\u003cp\u003eDefault Interface Methods 274\u003c\/p\u003e\n\u003cp\u003eStatic Interface Methods 278\u003c\/p\u003e\n\u003cp\u003eUnderstanding Polymorphism 279\u003c\/p\u003e\n\u003cp\u003eObject vs. Reference 281\u003c\/p\u003e\n\u003cp\u003eCasting Objects 282\u003c\/p\u003e\n\u003cp\u003eVirtual Methods 284\u003c\/p\u003e\n\u003cp\u003ePolymorphic Parameters 285\u003c\/p\u003e\n\u003cp\u003ePolymorphism and Method Overriding 287\u003c\/p\u003e\n\u003cp\u003eSummary 288\u003c\/p\u003e\n\u003cp\u003eExam Essentials 289\u003c\/p\u003e\n\u003cp\u003eReview Questions 291\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eChapter 6 Exceptions 299\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003eUnderstanding Exceptions 300\u003c\/p\u003e\n\u003cp\u003eThe Role of Exceptions 300\u003c\/p\u003e\n\u003cp\u003eUnderstanding Exception Types 302\u003c\/p\u003e\n\u003cp\u003eThrowing an Exception 304\u003c\/p\u003e\n\u003cp\u003eUsing a try Statement 305\u003c\/p\u003e\n\u003cp\u003eAdding a finally Block 307\u003c\/p\u003e\n\u003cp\u003eCatching Various Types of Exceptions 309\u003c\/p\u003e\n\u003cp\u003eThrowing a Second Exception 311\u003c\/p\u003e\n\u003cp\u003eRecognizing Common Exception Types 313\u003c\/p\u003e\n\u003cp\u003eRuntime Exceptions 314\u003c\/p\u003e\n\u003cp\u003eChecked Exceptions 317\u003c\/p\u003e\n\u003cp\u003eErrors 317\u003c\/p\u003e\n\u003cp\u003eCalling Methods That Throw Exceptions 318\u003c\/p\u003e\n\u003cp\u003eSubclasses 319\u003c\/p\u003e\n\u003cp\u003ePrinting an Exception 321\u003c\/p\u003e\n\u003cp\u003eSummary 323\u003c\/p\u003e\n\u003cp\u003eExam Essentials 324\u003c\/p\u003e\n\u003cp\u003eReview Questions 325\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eAppendix A Answers to Review Questions 333\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003eChapter 1: Java Building Blocks 334\u003c\/p\u003e\n\u003cp\u003eChapter 2: Operators and Statements 336\u003c\/p\u003e\n\u003cp\u003eChapter 3: Core Java APIs 339\u003c\/p\u003e\n\u003cp\u003eChapter 4: Methods and Encapsulation 342\u003c\/p\u003e\n\u003cp\u003eChapter 5: Class Design 346\u003c\/p\u003e\n\u003cp\u003eChapter 6: Exceptions 349\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eAppendix B Study Tips 353\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003eStudying for the Test 354\u003c\/p\u003e\n\u003cp\u003eCreating a Study Plan 354\u003c\/p\u003e\n\u003cp\u003eCreating and Running Sample Applications 355\u003c\/p\u003e\n\u003cp\u003eTaking the Test 359\u003c\/p\u003e\n\u003cp\u003eUnderstanding the Question 359\u003c\/p\u003e\n\u003cp\u003eApplying Process of Elimination 362\u003c\/p\u003e\n\u003cp\u003eOptimizing Your Time 364\u003c\/p\u003e\n\u003cp\u003eGetting a Good Night's Rest 366\u003c\/p\u003e\n\u003cp\u003eIndex 367\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eOCP: Oracle Certified Professional Java SE 8 Programmer II Study Guide: Exam 1Z0-809\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003eIntroduction xix\u003c\/p\u003e\n\u003cp\u003eAssessment Test xxxviii\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eChapter 1 Advanced Class Design 1\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003eReviewing OCA Concepts 2\u003c\/p\u003e\n\u003cp\u003eAccess Modifiers 2\u003c\/p\u003e\n\u003cp\u003eOverloading and Overriding 4\u003c\/p\u003e\n\u003cp\u003eAbstract Classes 5\u003c\/p\u003e\n\u003cp\u003eStatic and Final 6\u003c\/p\u003e\n\u003cp\u003eImports 6\u003c\/p\u003e\n\u003cp\u003eUsing instance of 7\u003c\/p\u003e\n\u003cp\u003eUnderstanding Virtual Method Invocation 9\u003c\/p\u003e\n\u003cp\u003eAnnotating Overridden Methods 11\u003c\/p\u003e\n\u003cp\u003eCoding equals, hashCode, and toString 13\u003c\/p\u003e\n\u003cp\u003etoString 13\u003c\/p\u003e\n\u003cp\u003eequals 15\u003c\/p\u003e\n\u003cp\u003ehashCode 18\u003c\/p\u003e\n\u003cp\u003eWorking with Enums 20\u003c\/p\u003e\n\u003cp\u003eUsing Enums in Switch Statements 21\u003c\/p\u003e\n\u003cp\u003eAdding Constructors, Fields, and Methods 22\u003c\/p\u003e\n\u003cp\u003eCreating Nested Classes 24\u003c\/p\u003e\n\u003cp\u003eMember Inner Classes 25\u003c\/p\u003e\n\u003cp\u003eLocal Inner Classes 27\u003c\/p\u003e\n\u003cp\u003eAnonymous Inner Classes 29\u003c\/p\u003e\n\u003cp\u003eStatic Nested Classes 31\u003c\/p\u003e\n\u003cp\u003eSummary 33\u003c\/p\u003e\n\u003cp\u003eExam Essentials 34\u003c\/p\u003e\n\u003cp\u003eReview Questions 36\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eChapter 2 Design Patterns and Principles 47\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003eDesigning an Interface 48\u003c\/p\u003e\n\u003cp\u003ePurpose of an Interface 51\u003c\/p\u003e\n\u003cp\u003eIntroducing Functional Programming 52\u003c\/p\u003e\n\u003cp\u003eDefining a Functional Interface 53\u003c\/p\u003e\n\u003cp\u003eImplementing Functional Interfaces with Lambdas 55\u003c\/p\u003e\n\u003cp\u003eApplying the Predicate Interface 60\u003c\/p\u003e\n\u003cp\u003eImplementing Polymorphism 61\u003c\/p\u003e\n\u003cp\u003eDistinguishing between an Object and a Reference 63\u003c\/p\u003e\n\u003cp\u003eCasting Object References 64\u003c\/p\u003e\n\u003cp\u003eUnderstanding Design Principles 66\u003c\/p\u003e\n\u003cp\u003eEncapsulating Data 66\u003c\/p\u003e\n\u003cp\u003eCreating JavaBeans 69\u003c\/p\u003e\n\u003cp\u003eApplying the Is ]a Relationship 71\u003c\/p\u003e\n\u003cp\u003eApplying the Has ]a Relationship 73\u003c\/p\u003e\n\u003cp\u003eComposing Objects 74\u003c\/p\u003e\n\u003cp\u003eWorking with Design Patterns 75\u003c\/p\u003e\n\u003cp\u003eApplying the Singleton Pattern 76\u003c\/p\u003e\n\u003cp\u003eCreating Immutable Objects 82\u003c\/p\u003e\n\u003cp\u003eUsing the Builder Pattern 86\u003c\/p\u003e\n\u003cp\u003eCreating Objects with the Factory Pattern 89\u003c\/p\u003e\n\u003cp\u003eSummary 93\u003c\/p\u003e\n\u003cp\u003eExam Essentials 93\u003c\/p\u003e\n\u003cp\u003eReview Questions 95\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eChapter 3 Generics and Collections 103\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003eReviewing OCA Collections 104\u003c\/p\u003e\n\u003cp\u003eArray and ArrayList 104\u003c\/p\u003e\n\u003cp\u003eSearching and Sorting 105\u003c\/p\u003e\n\u003cp\u003eWrapper Classes and Autoboxing 106\u003c\/p\u003e\n\u003cp\u003eThe Diamond Operator 107\u003c\/p\u003e\n\u003cp\u003eWorking with Generics 108\u003c\/p\u003e\n\u003cp\u003eGeneric Classes 109\u003c\/p\u003e\n\u003cp\u003eGeneric Interfaces 112\u003c\/p\u003e\n\u003cp\u003eGeneric Methods 114\u003c\/p\u003e\n\u003cp\u003eInteracting with Legacy Code 114\u003c\/p\u003e\n\u003cp\u003eBounds 117\u003c\/p\u003e\n\u003cp\u003ePutting It All Together 122\u003c\/p\u003e\n\u003cp\u003eUsing Lists, Sets, Maps, and Queues 124\u003c\/p\u003e\n\u003cp\u003eCommon Collections Methods 125\u003c\/p\u003e\n\u003cp\u003eUsing the List Interface 127\u003c\/p\u003e\n\u003cp\u003eUsing the Set Interface 132\u003c\/p\u003e\n\u003cp\u003eUsing the Queue Interface 134\u003c\/p\u003e\n\u003cp\u003eMap 138\u003c\/p\u003e\n\u003cp\u003eComparing Collection Types 140\u003c\/p\u003e\n\u003cp\u003eComparator vs. Comparable 143\u003c\/p\u003e\n\u003cp\u003eComparable 143\u003c\/p\u003e\n\u003cp\u003eComparator 146\u003c\/p\u003e\n\u003cp\u003eSearching and Sorting 150\u003c\/p\u003e\n\u003cp\u003eAdditions in Java 8 152\u003c\/p\u003e\n\u003cp\u003eUsing Method References 152\u003c\/p\u003e\n\u003cp\u003eRemoving Conditionally 154\u003c\/p\u003e\n\u003cp\u003eUpdating All Elements 155\u003c\/p\u003e\n\u003cp\u003eLooping through a Collection 155\u003c\/p\u003e\n\u003cp\u003eUsing New Java 8 Map APIs 155\u003c\/p\u003e\n\u003cp\u003eSummary 159\u003c\/p\u003e\n\u003cp\u003eExam Essentials 161\u003c\/p\u003e\n\u003cp\u003eReview Questions 162\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eChapter 4 Functional Programming 171\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003eUsing Variables in Lambdas 172\u003c\/p\u003e\n\u003cp\u003eWorking with Built-In Functional Interfaces 173\u003c\/p\u003e\n\u003cp\u003eImplementing Supplier 174\u003c\/p\u003e\n\u003cp\u003eImplementing Consumer and BiConsumer 175\u003c\/p\u003e\n\u003cp\u003eImplementing Predicate and BiPredicate 177\u003c\/p\u003e\n\u003cp\u003eImplementing Function and BiFunction 178\u003c\/p\u003e\n\u003cp\u003eImplementing UnaryOperator and BinaryOperator 180\u003c\/p\u003e\n\u003cp\u003eChecking Functional Interfaces 181\u003c\/p\u003e\n\u003cp\u003eReturning an Optional 182\u003c\/p\u003e\n\u003cp\u003eUsing Streams 185\u003c\/p\u003e\n\u003cp\u003eCreating Stream Sources 188\u003c\/p\u003e\n\u003cp\u003eUsing Common Terminal Operations 189\u003c\/p\u003e\n\u003cp\u003eUsing Common Intermediate Operations 196\u003c\/p\u003e\n\u003cp\u003ePutting Together the Pipeline 200\u003c\/p\u003e\n\u003cp\u003ePrinting a Stream 204\u003c\/p\u003e\n\u003cp\u003eWorking with Primitives 205\u003c\/p\u003e\n\u003cp\u003eCreating Primitive Streams 205\u003c\/p\u003e\n\u003cp\u003eUsing Optional with Primitive Streams 208\u003c\/p\u003e\n\u003cp\u003eSummarizing Statistics 210\u003c\/p\u003e\n\u003cp\u003eLearning the Functional Interfaces for Primitives 210\u003c\/p\u003e\n\u003cp\u003eWorking with Advanced Stream Pipeline Concepts 213\u003c\/p\u003e\n\u003cp\u003eLinking Streams to the Underlying Data 213\u003c\/p\u003e\n\u003cp\u003eChaining Optionals 214\u003c\/p\u003e\n\u003cp\u003eCollecting Results 217\u003c\/p\u003e\n\u003cp\u003eSummary 223\u003c\/p\u003e\n\u003cp\u003eExam Essentials 224\u003c\/p\u003e\n\u003cp\u003eReview Questions 226\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eChapter 5 Dates, Strings, and Localization 233\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003eWorking with Dates and Times 234\u003c\/p\u003e\n\u003cp\u003eCreating Dates and Times 235\u003c\/p\u003e\n\u003cp\u003eManipulating Dates and Times 241\u003c\/p\u003e\n\u003cp\u003eWorking with Periods 244\u003c\/p\u003e\n\u003cp\u003eWorking with Durations 247\u003c\/p\u003e\n\u003cp\u003eAccounting for Daylight Savings Time 251\u003c\/p\u003e\n\u003cp\u003eReviewing the String class 253\u003c\/p\u003e\n\u003cp\u003eAdding Internationalization and Localization 255\u003c\/p\u003e\n\u003cp\u003ePicking a Locale 256\u003c\/p\u003e\n\u003cp\u003eUsing a Resource Bundle 258\u003c\/p\u003e\n\u003cp\u003eFormatting Numbers 267\u003c\/p\u003e\n\u003cp\u003eFormatting Dates and Times 270\u003c\/p\u003e\n\u003cp\u003eSummary 273\u003c\/p\u003e\n\u003cp\u003eExam Essentials 274\u003c\/p\u003e\n\u003cp\u003eReview Questions 276\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eChapter 6 Exceptions and Assertions 283\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003eReviewing Exceptions 284\u003c\/p\u003e\n\u003cp\u003eExceptions Terminology 284\u003c\/p\u003e\n\u003cp\u003eCategories of Exceptions 285\u003c\/p\u003e\n\u003cp\u003eExceptions on the OCP 286\u003c\/p\u003e\n\u003cp\u003eTry Statement 288\u003c\/p\u003e\n\u003cp\u003eThrow vs. Throws 289\u003c\/p\u003e\n\u003cp\u003eCreating Custom Exceptions 289\u003c\/p\u003e\n\u003cp\u003eUsing Multi-catch 291\u003c\/p\u003e\n\u003cp\u003eUsing Try-With-Resources 296\u003c\/p\u003e\n\u003cp\u003eTry-With-Resources Basics 298\u003c\/p\u003e\n\u003cp\u003eAutoCloseable 300\u003c\/p\u003e\n\u003cp\u003eSuppressed Exceptions 302\u003c\/p\u003e\n\u003cp\u003ePutting It Together 305\u003c\/p\u003e\n\u003cp\u003eRethrowing Exceptions 305\u003c\/p\u003e\n\u003cp\u003eWorking with Assertions 308\u003c\/p\u003e\n\u003cp\u003eThe assert Statement 308\u003c\/p\u003e\n\u003cp\u003eEnabling Assertions 309\u003c\/p\u003e\n\u003cp\u003eUsing Assertions 310\u003c\/p\u003e\n\u003cp\u003eSummary 314\u003c\/p\u003e\n\u003cp\u003eExam Essentials 315\u003c\/p\u003e\n\u003cp\u003eReview Questions 316\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eChapter 7 Concurrency 325\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003eIntroducing Threads 327\u003c\/p\u003e\n\u003cp\u003eDistinguishing Thread Types 328\u003c\/p\u003e\n\u003cp\u003eUnderstanding Thread Concurrency 328\u003c\/p\u003e\n\u003cp\u003eIntroducing Runnable 330\u003c\/p\u003e\n\u003cp\u003eCreating a Thread 331\u003c\/p\u003e\n\u003cp\u003ePolling with Sleep 334\u003c\/p\u003e\n\u003cp\u003eCreating Threads with the ExecutorService 335\u003c\/p\u003e\n\u003cp\u003eIntroducing the Single-Thread Executor 335\u003c\/p\u003e\n\u003cp\u003eShutting Down a Thread Executor 337\u003c\/p\u003e\n\u003cp\u003eSubmitting Tasks 338\u003c\/p\u003e\n\u003cp\u003eWaiting for Results 340\u003c\/p\u003e\n\u003cp\u003eScheduling Tasks 345\u003c\/p\u003e\n\u003cp\u003eIncreasing Concurrency with Pools 348\u003c\/p\u003e\n\u003cp\u003eSynchronizing Data Access 350\u003c\/p\u003e\n\u003cp\u003eProtecting Data with Atomic Classes 352\u003c\/p\u003e\n\u003cp\u003eImproving Access with Synchronized Blocks 354\u003c\/p\u003e\n\u003cp\u003eSynchronizing Methods 356\u003c\/p\u003e\n\u003cp\u003eUnderstanding the Cost of Synchronization 357\u003c\/p\u003e\n\u003cp\u003eUsing Concurrent Collections 358\u003c\/p\u003e\n\u003cp\u003eIntroducing Concurrent Collections 358\u003c\/p\u003e\n\u003cp\u003eUnderstanding Memory Consistency Errors 359\u003c\/p\u003e\n\u003cp\u003eWorking with Concurrent Classes 360\u003c\/p\u003e\n\u003cp\u003eObtaining Synchronized Collections 365\u003c\/p\u003e\n\u003cp\u003eWorking with Parallel Streams 366\u003c\/p\u003e\n\u003cp\u003eCreating Parallel Streams 366\u003c\/p\u003e\n\u003cp\u003eProcessing Tasks in Parallel 367\u003c\/p\u003e\n\u003cp\u003eProcessing Parallel Reductions 372\u003c\/p\u003e\n\u003cp\u003eManaging Concurrent Processes 377\u003c\/p\u003e\n\u003cp\u003eCreating a CyclicBarrier 377\u003c\/p\u003e\n\u003cp\u003eApplying the Fork\/Join Framework 381\u003c\/p\u003e\n\u003cp\u003eIdentifying Threading Problems 387\u003c\/p\u003e\n\u003cp\u003eUnderstanding Liveness 387\u003c\/p\u003e\n\u003cp\u003eManaging Race Conditions 391\u003c\/p\u003e\n\u003cp\u003eSummary 392\u003c\/p\u003e\n\u003cp\u003eExam Essentials 393\u003c\/p\u003e\n\u003cp\u003eReview Questions 394\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eChapter 8 IO 405\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003eUnderstanding Files and Directories 406\u003c\/p\u003e\n\u003cp\u003eConceptualizing the File System 406\u003c\/p\u003e\n\u003cp\u003eIntroducing the File Class 407\u003c\/p\u003e\n\u003cp\u003eIntroducing Streams 411\u003c\/p\u003e\n\u003cp\u003eStream Fundamentals 411\u003c\/p\u003e\n\u003cp\u003eStream Nomenclature 412\u003c\/p\u003e\n\u003cp\u003eCommon Stream Operations 418\u003c\/p\u003e\n\u003cp\u003eWorking with Streams 420\u003c\/p\u003e\n\u003cp\u003eThe FileInputStream and FileOutputStream Classes 420\u003c\/p\u003e\n\u003cp\u003eThe FileReader and FileWriter classes 424\u003c\/p\u003e\n\u003cp\u003eThe ObjectInputStream and ObjectOutputStream Classes 426\u003c\/p\u003e\n\u003cp\u003eThe PrintStream and PrintWriter Classes 432\u003c\/p\u003e\n\u003cp\u003eReview of Stream Classes 435\u003c\/p\u003e\n\u003cp\u003eInteracting with Users 437\u003c\/p\u003e\n\u003cp\u003eThe Old Way 437\u003c\/p\u003e\n\u003cp\u003eThe New Way 438\u003c\/p\u003e\n\u003cp\u003eSummary 442\u003c\/p\u003e\n\u003cp\u003eExam Essentials 443\u003c\/p\u003e\n\u003cp\u003eReview Questions 445\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eChapter 9 NIO.2 453\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003eIntroducing NIO.2 454\u003c\/p\u003e\n\u003cp\u003eIntroducing Path 455\u003c\/p\u003e\n\u003cp\u003eCreating Paths 456\u003c\/p\u003e\n\u003cp\u003eInteracting with Paths and Files 460\u003c\/p\u003e\n\u003cp\u003eProviding Optional Arguments 461\u003c\/p\u003e\n\u003cp\u003eUsing Path Objects 462\u003c\/p\u003e\n\u003cp\u003eInteracting with Files 471\u003c\/p\u003e\n\u003cp\u003eUnderstanding File Attributes 478\u003c\/p\u003e\n\u003cp\u003eDiscovering Basic File Attributes 478\u003c\/p\u003e\n\u003cp\u003eImproving Access with Views 483\u003c\/p\u003e\n\u003cp\u003ePresenting the New Stream Methods 487\u003c\/p\u003e\n\u003cp\u003eConceptualizing Directory Walking 487\u003c\/p\u003e\n\u003cp\u003eWalking a Directory 488\u003c\/p\u003e\n\u003cp\u003eSearching a Directory 490\u003c\/p\u003e\n\u003cp\u003eListing Directory Contents 491\u003c\/p\u003e\n\u003cp\u003ePrinting File Contents 492\u003c\/p\u003e\n\u003cp\u003eComparing Legacy File and NIO.2 Methods 494\u003c\/p\u003e\n\u003cp\u003eSummary 495\u003c\/p\u003e\n\u003cp\u003eExam Essentials 495\u003c\/p\u003e\n\u003cp\u003eReview Questions 497\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eChapter 10 JDBC 505\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003eIntroducing Relational Databases and SQL 507\u003c\/p\u003e\n\u003cp\u003eIdentifying the Structure of a Relational Database 508\u003c\/p\u003e\n\u003cp\u003eWriting Basic SQL Statements 510\u003c\/p\u003e\n\u003cp\u003eIntroducing the Interfaces of JDBC 511\u003c\/p\u003e\n\u003cp\u003eConnecting to a Database 513\u003c\/p\u003e\n\u003cp\u003eBuilding a JDBC URL 513\u003c\/p\u003e\n\u003cp\u003eGetting a Database Connection 515\u003c\/p\u003e\n\u003cp\u003eObtaining a Statement 518\u003c\/p\u003e\n\u003cp\u003eChoosing a ResultSet Type 519\u003c\/p\u003e\n\u003cp\u003eChoosing a ResultSet Concurrency Mode 520\u003c\/p\u003e\n\u003cp\u003eExecuting a Statement 520\u003c\/p\u003e\n\u003cp\u003eGetting Data from a ResultSet 524\u003c\/p\u003e\n\u003cp\u003eReading a ResultSet 524\u003c\/p\u003e\n\u003cp\u003eGetting Data for a Column 526\u003c\/p\u003e\n\u003cp\u003eScrolling ResultSet 529\u003c\/p\u003e\n\u003cp\u003eClosing Database Resources 533\u003c\/p\u003e\n\u003cp\u003eDealing with Exceptions 535\u003c\/p\u003e\n\u003cp\u003eSummary 536\u003c\/p\u003e\n\u003cp\u003eExam Essentials 537\u003c\/p\u003e\n\u003cp\u003eReview Questions 539\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eAppendix A Answers to Review Questions 547\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003eChapter 1: Advanced Class Design 548\u003c\/p\u003e\n\u003cp\u003eChapter 2: Design Patterns and Principles 550\u003c\/p\u003e\n\u003cp\u003eChapter 3: Generics and Collections 553\u003c\/p\u003e\n\u003cp\u003eChapter 4: Functional Programming 556\u003c\/p\u003e\n\u003cp\u003eChapter 5: Dates, Strings, and Localization 558\u003c\/p\u003e\n\u003cp\u003eChapter 6: Exceptions and Assertions 560\u003c\/p\u003e\n\u003cp\u003eChapter 7: Concurrency 561\u003c\/p\u003e\n\u003cp\u003eChapter 8: IO 565\u003c\/p\u003e\n\u003cp\u003eChapter 9: NIO.2 568\u003c\/p\u003e\n\u003cp\u003eChapter 10: JDBC 571\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eAppendix B Study Tips 575\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003eStudying for the Test 576\u003c\/p\u003e\n\u003cp\u003eCreating a Study Plan 576\u003c\/p\u003e\n\u003cp\u003eComparing Previous Exams 578\u003c\/p\u003e\n\u003cp\u003eCreating and Running Sample Applications 579\u003c\/p\u003e\n\u003cp\u003eTaking the Test 582\u003c\/p\u003e\n\u003cp\u003eUnderstanding the Question 582\u003c\/p\u003e\n\u003cp\u003eTaking Advantage of the Exam Software 587\u003c\/p\u003e\n\u003cp\u003eUsing the Provided Writing Material 587\u003c\/p\u003e\n\u003cp\u003eChoosing the Best Answer 590\u003c\/p\u003e\n\u003cp\u003eOptimizing Your Time 591\u003c\/p\u003e\n\u003cp\u003eGetting a Good Night's Rest 593\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eAppendix C Upgrading from Java 6 or Earlier 595\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003eEnhancing the Java Language 596\u003c\/p\u003e\n\u003cp\u003eUsing the Diamond Operator 596\u003c\/p\u003e\n\u003cp\u003eCreating Literals 597\u003c\/p\u003e\n\u003cp\u003eMaking Decisions with Switch 598\u003c\/p\u003e\n\u003cp\u003eFormatting and Parsing 603\u003c\/p\u003e\n\u003cp\u003eUsing DecimalFormat Flags 603\u003c\/p\u003e\n\u003cp\u003eUsing DateFormat 603\u003c\/p\u003e\n\u003cp\u003eFormatting 604\u003c\/p\u003e\n\u003cp\u003eParsing 605\u003c\/p\u003e\n\u003cp\u003eCustom Date Formats 606\u003c\/p\u003e\n\u003cp\u003eApplying Locks 607\u003c\/p\u003e\n\u003cp\u003eUnderstanding the Lock Framework 607\u003c\/p\u003e\n\u003cp\u003eUsing a ReentrantLock 610\u003c\/p\u003e\n\u003cp\u003eUnderstanding Read\/Write Locks 614\u003c\/p\u003e\n\u003cp\u003eUsing a ReentrantReadWriteLock 615\u003c\/p\u003e\n\u003cp\u003eWorking with Directories 617\u003c\/p\u003e\n\u003cp\u003eTraversing Directories 618\u003c\/p\u003e\n\u003cp\u003eMonitoring a Directory for Changes 625\u003c\/p\u003e\n\u003cp\u003eSummary 633\u003c\/p\u003e\n\u003cp\u003eExam Essentials 633\u003c\/p\u003e\n\u003cp\u003eReview Questions 635\u003c\/p\u003e\n\u003cp\u003eAnswers to Practice Test 645\u003c\/p\u003e\n\u003cp\u003eIndex 649\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003e \u003c\/b\u003e\u003c\/p\u003e\n\u003cbr\u003e\u003cbr\u003e\n\u003cstrong\u003eBiographical Note\u003c\/strong\u003e:\u003cbr\u003e\n\u003cp\u003e\u003cb\u003eJeanne Boyarsky\u003c\/b\u003e (New York, NY), has worked as a Java developer for a bank in NYC for 11 years where she develops, mentors and conducts training. In her free time, she is a senior moderator at CodeRanch and works on the forum code base. Jeanne has also mentored the programming division of a FIRST robotics team since 2009 where she works with students just learning Java. You can find more information about Jeanne at her bio at CodeRanch (www.coderanch.com\/how-to\/java\/BioJeanneBoyarsky).\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eScott Selikoff\u003c\/b\u003e (Bridgewater, NJ) has been a Java Enterprise developer for over 14 years. He started off working for a number of tech startups, as well as medical and pharmaceutical companies in the Philadelphia area, including Siemens Medical Solutions. In 2006, he started his own consulting firm called Selikoff Solutions, LLC, which specializes in building custom mobile and server solutions for businesses in the NYC\/NJ area. Besides training new developers, Scott also enjoys teaching and has given lectures at both Cornell University and Rutgers University. Both are regular contributors to Scott's website, Down Home Country Coding (www.selikoff.net).\u003c\/p\u003e\n\u003cbr\u003e\u003cbr\u003e\n\u003cstrong\u003ePublisher Marketing\u003c\/strong\u003e:\u003cbr\u003e\n\u003cp\u003e\u003cb\u003eYour complete certification guide on the path to Oracle Java SE\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003eThe Oracle Java SE Certification track now consists of three levels - Associate (OCA), Professional (OCP), and Master (OCM). This valuable kit helps you attain success at the OCA and OCP levels, providing clarification of the complex material along with plenty of practice that covers \u003ci\u003eall\u003c\/i\u003e exam objectives.\u003c\/p\u003e\n\u003cp\u003e\u003ci\u003eOCA \/ OCP Oracle Java SE 8 Programmer Certification Kit\u003c\/i\u003e is the ideal tool for preparing for the OCA and OCP exams. With two comprehensive study guides in one package, this kit serves as a helpful companion throughout your journey to Oracle Java SE 8 certification. The release of Java 8 brought the language's biggest changes to date, and for the first time, candidates are required to learn functional programming to pass the exam. The \u003ci\u003eOCA: Oracle Certified Associate Java SE 8 Programmer I Study Guide\u003c\/i\u003e has you covered, with thorough functional programming explanation and information on all key topic areas Java programmers need to know, covering one hundred percent of the material on Exam 1Z0-808.\u003c\/p\u003e\n\u003cp\u003eOnce you're OCA certified, the \u003ci\u003eOCP: Oracle Certified Professional Java SE 8 Programmer II Study Guide\u003c\/i\u003e is your comprehensive companion for preparing for Exam 1Z0-809 as well as upgrade Exam 1Z0-810 and Exam 1Z0-813. 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).\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e Work confidently with operators, conditionals, and loops\u003c\/li\u003e\n\u003cli\u003e Understand object-oriented design principles and patterns\u003c\/li\u003e\n\u003cli\u003e Master functional programming fundamentals\u003c\/li\u003e\n\u003cli\u003e Understand abstract classes, interfaces, and class design\u003c\/li\u003e\n\u003cli\u003e Learn object-oriented design principles and patterns\u003c\/li\u003e\n\u003cli\u003e Delve into functional programming, advanced strings, and localization\u003c\/li\u003e\n\u003cli\u003e Master IO, NIO, and JDBC with expert-led database practice\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eIf you're ready to take the next step in your IT career and tackle these challenging exams, \u003ci\u003eOCA \/ OCP Oracle Java SE 8 Programmer Certification Kit\u003c\/i\u003e is your ideal companion on the road to certification, and can give you the confidence you need.\u003c\/p\u003e\n\u003cbr\u003e\u003cbr\u003e\n\n\u003cbr\u003e\n\u003cbr\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/table\u003e\n","brand":"Sybex","offers":[{"title":"Default Title","offer_id":51502660518166,"sku":"9781119272090","price":108.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0857\/9910\/8886\/files\/9781119272090.jpg?v=1783312457","url":"https:\/\/lusper.myshopify.com\/products\/oca-ocp-java-se-8-programmer-certification-kit-exam-1z0-808-and-exam-1z0-809-1st-ed","provider":"Lusperbooks","version":"1.0","type":"link"}