outline_of_java_programming_language_study

Outline of Java programming language study

Introduction

1 Disclaimer

2 Introduction to OCA Java SE 8 Programmer I Certification

3 The importance of OCA Java SE 8 Programmer I Certification

4 Comparing OCA Java exam versions

5 Next step: OCP Java SE 8 Programmer II (1Z0-809) exam

6 Complete exam objectives, mapped to book chapters, and readiness checklist

7 FAQs

7.1 FAQs on exam preparation

7.2 FAQs on taking the exam

7.1 FAQs on exam preparation

7.2 FAQs on taking the exam

8 The testing engine used in the exam

1 Disclaimer

2 Introduction to OCA Java SE 8 Programmer I Certification

3 The importance of OCA Java SE 8 Programmer I Certification

4 Comparing OCA Java exam versions

5 Next step: OCP Java SE 8 Programmer II (1Z0-809) exam

6 Complete exam objectives, mapped to book chapters, and readiness checklist

7 FAQs

7.1 FAQs on exam preparation

7.2 FAQs on taking the exam

7.1 FAQs on exam preparation

7.2 FAQs on taking the exam

8 The testing engine used in the exam


Java Basics

1 Java basics

1.1 The structures of a Java class and a source code file

1.1.1 Structure of a Java class

1.1.2 Structure and components of a Java source code file

1.1.1 Structure of a Java class

1.1.2 Structure and components of a Java source code file

1.2 Executable Java applications

1.2.1 Executable Java classes versus non-executable Java classes

1.2.2 The main method

1.2.3 Run a Java program from the command line

1.2.1 Executable Java classes versus non-executable Java classes

1.2.2 The main method

1.2.3 Run a Java program from the command line

1.3 Java packages

1.3.1 The need for Java packages

1.3.2 Defining classes in a Java package using the package statement

1.3.3 Using simple names with import statements

1.3.4 Using packaged classes without using the import statement

1.3.5 Importing a single member versus all members of a package

1.3.6 The import statement doesn’t import the whole package tree

1.3.7 Importing classes from the default package

1.3.8 Static imports

1.3.1 The need for packages

1.3.2 Defining classes in a package using the package statement

1.3.3 Using simple names with import statements

1.3.4 Using packaged classes without using the import statement

1.3.5 Importing a single member versus all members of a package

1.3.6 The import statement doesn’t import the whole package tree

1.3.7 Importing classes from the default package

1.3.8 Static imports


1.4 Java access modifiers

1.4.1 Access modifiers

1.4.2 Public access modifier

1.4.3 Protected access modifier

1.4.4 Default access (package access)

1.4.5 private access modifier

1.4.6 Access modifiers and Java entities

1.4.1 Access modifiers

1.4.2 Public access modifier

1.4.3 Protected access modifier

1.4.4 Default access (package access)

1.4.5 private access modifier

1.4.6 Access modifiers and Java entities


1.5 Nonaccess modifiers

1.5.1 abstract modifier

1.5.2 final modifier

1.5.3 static modifier

1.5.1 abstract modifier

1.5.2 final modifier

1.5.3 static modifier


1.6 Features and components of Java

1.6.1 Valid features and components of Java

1.6.2 Irrelevant features and components of Java

1.6.1 Valid features and components of Java

1.6.2 Irrelevant features and components of Java

1.7 Summary

1.8 Review notes 1.9 Sample exam questions 1.10 Answers to sample exam questions 1.1 The structures of a Java class and a source code file 1.1.1 Structure of a Java class 1.1.2 Structure and components of a Java source code file 1.1.1 Structure of a Java class 1.1.2 Structure and components of a Java source code file 1.2 Executable Java applications 1.2.1 Executable Java classes versus non-executable Java classes 1.2.2 The main method 1.2.3 Run a Java program from the command line 1.2.1 Executable Java classes versus non-executable Java classes 1.2.2 The main method 1.2.3 Run a Java program from the command line 1.3 Java packages 1.3.1 The need for packages 1.3.2 Defining classes in a package using the package statement 1.3.3 Using simple names with import statements 1.3.4 Using packaged classes without using the import statement 1.3.5 Importing a single member versus all members of a package 1.3.6 The import statement doesn’t import the whole package tree 1.3.7 Importing classes from the default package 1.3.8 Static imports 1.3.1 The need for packages 1.3.2 Defining classes in a package using the package statement 1.3.3 Using simple names with import statements 1.3.4 Using packaged classes without using the import statement 1.3.5 Importing a single member versus all members of a package 1.3.6 The import statement doesn’t import the whole package tree 1.3.7 Importing classes from the default package 1.3.8 Static imports 1.4 Java access modifiers 1.4.1 Access modifiers 1.4.2 Public access modifier 1.4.3 Protected access modifier 1.4.4 Default access (package access) 1.4.5 private access modifier 1.4.6 Access modifiers and Java entities 1.4.1 Access modifiers 1.4.2 Public access modifier 1.4.3 Protected access modifier 1.4.4 Default access (package access) 1.4.5 private access modifier 1.4.6 Access modifiers and Java entities 1.5 Nonaccess modifiers 1.5.1 abstract modifier 1.5.2 final modifier 1.5.3 static modifier 1.5.1 abstract modifier 1.5.2 final modifier 1.5.3 static modifier 1.6 Features and components of Java 1.6.1 Valid features and components of Java 1.6.2 Irrelevant features and components of Java 1.6.1 Valid features and components of Java 1.6.2 Irrelevant features and components of Java 1.7 Summary 1.8 Review notes 1.9 Sample exam questions 1.10 Answers to sample exam questions 2 Working with Java data types 2.1 Primitive variables 2.1.1 Category: Boolean 2.1.2 Category: signed numeric 2.1.3 Category: character (unsigned integer) 2.1.4 Confusion with the names of the primitive data types 2.1.1 Category: Boolean 2.1.2 Category: signed numeric 2.1.3 Category: character (unsigned integer) 2.1.4 Confusion with the names of the primitive data types 2.2 Identifiers 2.2.1 Valid and invalid identifiers 2.2.1 Valid and invalid identifiers 2.3 Object reference variables 2.3.1 What are object reference variables? 2.3.2 Differentiating between object reference variables and primitive variables 2.3.1 What are object reference variables? 2.3.2 Differentiating between object reference variables and primitive variables 2.4 Operators 2.4.1 Assignment operators 2.4.2 Arithmetic operators 2.4.3 Relational operators 2.4.4 Logical operators 2.4.5 Operator precedence 2.4.1 Assignment operators 2.4.2 Arithmetic operators 2.4.3 Relational operators 2.4.4 Logical operators 2.4.5 Operator precedence 2.5 Wrapper classes 2.5.1 Class hierarchy of wrapper classes 2.5.2 Creating objects of the wrapper classes 2.5.3 Retrieving primitive values from the wrapper classes 2.5.4 Parsing a string value to a primitive type 2.5.5 Difference between using the valueOf method and constructors of wrapper classes 2.5.6 Comparing objects of wrapper classes 2.5.7 Autoboxing and unboxing 2.5.1 Class hierarchy of wrapper classes 2.5.2 Creating objects of the wrapper classes 2.5.3 Retrieving primitive values from the wrapper classes 2.5.4 Parsing a string value to a primitive type 2.5.5 Difference between using the valueOf method and constructors of wrapper classes 2.5.6 Comparing objects of wrapper classes 2.5.7 Autoboxing and unboxing 2.6 Summary 2.7 Review notes 2.8 Sample exam questions 2.9 Answers to sample exam questions 2.1 Primitive variables 2.1.1 Category: Boolean 2.1.2 Category: signed numeric 2.1.3 Category: character (unsigned integer) 2.1.4 Confusion with the names of the primitive data types 2.1.1 Category: Boolean 2.1.2 Category: signed numeric 2.1.3 Category: character (unsigned integer) 2.1.4 Confusion with the names of the primitive data types 2.2 Identifiers 2.2.1 Valid and invalid identifiers 2.2.1 Valid and invalid identifiers 2.3 Object reference variables 2.3.1 What are object reference variables? 2.3.2 Differentiating between object reference variables and primitive variables 2.3.1 What are object reference variables? 2.3.2 Differentiating between object reference variables and primitive variables 2.4 Operators 2.4.1 Assignment operators 2.4.2 Arithmetic operators 2.4.3 Relational operators 2.4.4 Logical operators 2.4.5 Operator precedence 2.4.1 Assignment operators 2.4.2 Arithmetic operators 2.4.3 Relational operators 2.4.4 Logical operators 2.4.5 Operator precedence 2.5 Wrapper classes 2.5.1 Class hierarchy of wrapper classes 2.5.2 Creating objects of the wrapper classes 2.5.3 Retrieving primitive values from the wrapper classes 2.5.4 Parsing a string value to a primitive type 2.5.5 Difference between using the valueOf method and constructors of wrapper classes 2.5.6 Comparing objects of wrapper classes 2.5.7 Autoboxing and unboxing 2.5.1 Class hierarchy of wrapper classes 2.5.2 Creating objects of the wrapper classes 2.5.3 Retrieving primitive values from the wrapper classes 2.5.4 Parsing a string value to a primitive type 2.5.5 Difference between using the valueOf method and constructors of wrapper classes 2.5.6 Comparing objects of wrapper classes 2.5.7 Autoboxing and unboxing 2.6 Summary 2.7 Review notes 2.8 Sample exam questions 2.9 Answers to sample exam questions 3 Methods and encapsulation 3.1 Scope of variables 3.1.1 Local variables 3.1.2 Method parameters 3.1.3 Instance variables 3.1.4 Class variables 3.1.5 Overlapping variable scopes 3.1.1 Local variables 3.1.2 Method parameters 3.1.3 Instance variables 3.1.4 Class variables 3.1.5 Overlapping variable scopes 3.2 Object’s life cycle 3.2.1 An object is born 3.2.2 Object is accessible 3.2.3 Object is inaccessible 3.2.4 Garbage collection 3.2.1 An object is born 3.2.2 Object is accessible 3.2.3 Object is inaccessible 3.2.4 Garbage collection 3.3 Create methods with arguments and return values 3.3.1 Return type of a method 3.3.2 Method parameters 3.3.3 Return statement 3.3.1 Return type of a method 3.3.2 Method parameters 3.3.3 Return statement 3.4 Create an overloaded method 3.4.1 Argument list 3.4.2 Return type 3.4.3 Access level 3.4.1 Argument list 3.4.2 Return type 3.4.3 Access level 3.5 Constructors of a class 3.5.1 User-defined constructors 3.5.2 Default constructor 3.5.3 Overloaded constructors 3.5.1 User-defined constructors 3.5.2 Default constructor 3.5.3 Overloaded constructors 3.6 Accessing object fields 3.6.1 What is an object field? 3.6.2 Read and write object fields 3.6.3 Calling methods on objects 3.6.1 What is an object field? 3.6.2 Read and write object fields 3.6.3 Calling methods on objects 3.7 Apply encapsulation principles to a class 3.7.1 Need for encapsulation 3.7.2 Apply encapsulation 3.7.1 Need for encapsulation 3.7.2 Apply encapsulation 3.8 Passing objects and primitives to methods 3.8.1 Passing primitives to methods 3.8.2 Passing object references to methods 3.8.1 Passing primitives to methods 3.8.2 Passing object references to methods 3.9 Summary 3.10 Review notes 3.11 Sample exam questions 3.12 Answers to sample exam questions 3.1 Scope of variables 3.1.1 Local variables 3.1.2 Method parameters 3.1.3 Instance variables 3.1.4 Class variables 3.1.5 Overlapping variable scopes 3.1.1 Local variables 3.1.2 Method parameters 3.1.3 Instance variables 3.1.4 Class variables 3.1.5 Overlapping variable scopes 3.2 Object’s life cycle 3.2.1 An object is born 3.2.2 Object is accessible 3.2.3 Object is inaccessible 3.2.4 Garbage collection 3.2.1 An object is born 3.2.2 Object is accessible 3.2.3 Object is inaccessible 3.2.4 Garbage collection 3.3 Create methods with arguments and return values 3.3.1 Return type of a method 3.3.2 Method parameters 3.3.3 Return statement 3.3.1 Return type of a method 3.3.2 Method parameters 3.3.3 Return statement 3.4 Create an overloaded method 3.4.1 Argument list 3.4.2 Return type 3.4.3 Access level 3.4.1 Argument list 3.4.2 Return type 3.4.3 Access level 3.5 Constructors of a class 3.5.1 User-defined constructors 3.5.2 Default constructor 3.5.3 Overloaded constructors 3.5.1 User-defined constructors 3.5.2 Default constructor 3.5.3 Overloaded constructors 3.6 Accessing object fields 3.6.1 What is an object field? 3.6.2 Read and write object fields 3.6.3 Calling methods on objects 3.6.1 What is an object field? 3.6.2 Read and write object fields 3.6.3 Calling methods on objects 3.7 Apply encapsulation principles to a class 3.7.1 Need for encapsulation 3.7.2 Apply encapsulation 3.7.1 Need for encapsulation 3.7.2 Apply encapsulation 3.8 Passing objects and primitives to methods 3.8.1 Passing primitives to methods 3.8.2 Passing object references to methods 3.8.1 Passing primitives to methods 3.8.2 Passing object references to methods 3.9 Summary 3.10 Review notes 3.11 Sample exam questions 3.12 Answers to sample exam questions 4 Selected classes from the Java API and arrays 4.1 Welcome to the world of the String class 4.1.1 Creating String objects 4.1.2 The class String is immutable 4.1.3 Methods of the class String 4.1.4 String objects and operators 4.1.5 Determining equality of Strings 4.1.1 Creating String objects 4.1.2 The class String is immutable 4.1.3 Methods of the class String 4.1.4 String objects and operators 4.1.5 Determining equality of Strings 4.2 Mutable strings: StringBuilder 4.2.1 The StringBuilder class is mutable 4.2.2 Creating StringBuilder objects 4.2.3 Methods of class StringBuilder 4.2.4 A quick note on the class StringBuffer 4.2.1 The StringBuilder class is mutable 4.2.2 Creating StringBuilder objects 4.2.3 Methods of class StringBuilder 4.2.4 A quick note on the class StringBuffer 4.3 Arrays 4.3.1 What is an array? 4.3.2 Array declaration 4.3.3 Array allocation 4.3.4 Array initialization 4.3.5 Combining array declaration, allocation, and initialization 4.3.6 Asymmetrical multidimensional arrays 4.3.7 Arrays of type interface, abstract class, and class Object 4.3.8 Members of an array 4.3.1 What is an array? 4.3.2 Array declaration 4.3.3 Array allocation 4.3.4 Array initialization 4.3.5 Combining array declaration, allocation, and initialization 4.3.6 Asymmetrical multidimensional arrays 4.3.7 Arrays of type interface, abstract class, and class Object 4.3.8 Members of an array 4.4 ArrayList 4.4.1 Creating an ArrayList 4.4.2 Adding elements to an ArrayList 4.4.3 Accessing elements of an ArrayList 4.4.4 Modifying the elements of an ArrayList 4.4.5 Deleting the elements of an ArrayList 4.4.6 Other methods of ArrayList 4.4.1 Creating an ArrayList 4.4.2 Adding elements to an ArrayList 4.4.3 Accessing elements of an ArrayList 4.4.4 Modifying the elements of an ArrayList 4.4.5 Deleting the elements of an ArrayList 4.4.6 Other methods of ArrayList 4.5 Comparing objects for equality 4.5.1 The method equals in the class java.lang.Object 4.5.2 Comparing objects of a user-defined class 4.5.3 Incorrect method signature of the equals method 4.5.4 Contract of the equals method 4.5.1 The method equals in the class java.lang.Object 4.5.2 Comparing objects of a user-defined class 4.5.3 Incorrect method signature of the equals method 4.5.4 Contract of the equals method 4.6 Working with calendar data 4.6.1 LocalDate 4.6.2 LocalTime 4.6.3 LocalDateTime 4.6.4 Period 4.6.5 DateTimeFormatter 4.6.1 LocalDate 4.6.2 LocalTime 4.6.3 LocalDateTime 4.6.4 Period 4.6.5 DateTimeFormatter 4.7 Summary 4.8 Review notes 4.9 Sample exam questions 4.10 Answers to sample exam questions 4.1 Welcome to the world of the String class 4.1.1 Creating String objects 4.1.2 The class String is immutable 4.1.3 Methods of the class String 4.1.4 String objects and operators 4.1.5 Determining equality of Strings 4.1.1 Creating String objects 4.1.2 The class String is immutable 4.1.3 Methods of the class String 4.1.4 String objects and operators 4.1.5 Determining equality of Strings 4.2 Mutable strings: StringBuilder 4.2.1 The StringBuilder class is mutable 4.2.2 Creating StringBuilder objects 4.2.3 Methods of class StringBuilder 4.2.4 A quick note on the class StringBuffer 4.2.1 The StringBuilder class is mutable 4.2.2 Creating StringBuilder objects 4.2.3 Methods of class StringBuilder 4.2.4 A quick note on the class StringBuffer 4.3 Arrays 4.3.1 What is an array? 4.3.2 Array declaration 4.3.3 Array allocation 4.3.4 Array initialization 4.3.5 Combining array declaration, allocation, and initialization 4.3.6 Asymmetrical multidimensional arrays 4.3.7 Arrays of type interface, abstract class, and class Object 4.3.8 Members of an array 4.3.1 What is an array? 4.3.2 Array declaration 4.3.3 Array allocation 4.3.4 Array initialization 4.3.5 Combining array declaration, allocation, and initialization 4.3.6 Asymmetrical multidimensional arrays 4.3.7 Arrays of type interface, abstract class, and class Object 4.3.8 Members of an array 4.4 ArrayList 4.4.1 Creating an ArrayList 4.4.2 Adding elements to an ArrayList 4.4.3 Accessing elements of an ArrayList 4.4.4 Modifying the elements of an ArrayList 4.4.5 Deleting the elements of an ArrayList 4.4.6 Other methods of ArrayList 4.4.1 Creating an ArrayList 4.4.2 Adding elements to an ArrayList 4.4.3 Accessing elements of an ArrayList 4.4.4 Modifying the elements of an ArrayList 4.4.5 Deleting the elements of an ArrayList 4.4.6 Other methods of ArrayList 4.5 Comparing objects for equality 4.5.1 The method equals in the class java.lang.Object 4.5.2 Comparing objects of a user-defined class 4.5.3 Incorrect method signature of the equals method 4.5.4 Contract of the equals method 4.5.1 The method equals in the class java.lang.Object 4.5.2 Comparing objects of a user-defined class 4.5.3 Incorrect method signature of the equals method 4.5.4 Contract of the equals method 4.6 Working with calendar data 4.6.1 LocalDate 4.6.2 LocalTime 4.6.3 LocalDateTime 4.6.4 Period 4.6.5 DateTimeFormatter 4.6.1 LocalDate 4.6.2 LocalTime 4.6.3 LocalDateTime 4.6.4 Period 4.6.5 DateTimeFormatter 4.7 Summary 4.8 Review notes 4.9 Sample exam questions 4.10 Answers to sample exam questions 5 Flow control 5.1 The if, if-else, and ternary constructs 5.1.1 The if construct and its flavors 5.1.2 Missing else blocks 5.1.3 Implications of the presence and absence of {} in if-else constructs 5.1.4 Appropriate versus inappropriate expressions passed as arguments to an if statement 5.1.5 Nested if constructs 5.1.6 Ternary construct 5.1.1 The if construct and its flavors 5.1.2 Missing else blocks 5.1.3 Implications of the presence and absence of {} in if-else constructs 5.1.4 Appropriate versus inappropriate expressions passed as arguments to an if statement 5.1.5 Nested if constructs 5.1.6 Ternary construct 5.2 The switch statement 5.2.1 Create and use a switch statement 5.2.2 Comparing a switch statement with multiple if-else constructs 5.2.3 Arguments passed to a switch statement 5.2.4 Values passed to the label case of a switch statement 5.2.5 Use of break statements within a switch statement 5.2.1 Create and use a switch statement 5.2.2 Comparing a switch statement with multiple if-else constructs 5.2.3 Arguments passed to a switch statement 5.2.4 Values passed to the label case of a switch statement 5.2.5 Use of break statements within a switch statement 5.3 The for loop 5.3.1 Initialization block 5.3.2 Termination condition 5.3.3 The update clause 5.3.4 Optional parts of a for statement 5.3.5 Nested for loop 5.3.1 Initialization block 5.3.2 Termination condition 5.3.3 The update clause 5.3.4 Optional parts of a for statement 5.3.5 Nested for loop 5.4 The enhanced for loop 5.4.1 Iteration with enhanced for loop 5.4.2 Limitations of the enhanced for loop 5.4.3 Nested enhanced for loop 5.4.1 Iteration with enhanced for loop 5.4.2 Limitations of the enhanced for loop 5.4.3 Nested enhanced for loop 5.5 The while and do-while loops 5.5.1 The while loop 5.5.2 The do-while loop 5.5.3 while and do-while block, expression, and nesting rules 5.5.1 The while loop 5.5.2 The do-while loop 5.5.3 while and do-while block, expression, and nesting rules 5.6 Comparing loop constructs 5.6.1 Comparing do-while and while loops 5.6.2 Comparing for and enhanced for loops 5.6.3 Comparing for and while loops 5.6.1 Comparing do-while and while loops 5.6.2 Comparing for and enhanced for loops 5.6.3 Comparing for and while loops 5.7 Loop statements: break and continue 5.7.1 The break statement 5.7.2 The continue statement 5.7.3 Labeled statements 5.7.1 The break statement 5.7.2 The continue statement 5.7.3 Labeled statements 5.8 Summary 5.9 Review notes 5.10 Sample exam questions 5.11 Answers to sample exam questions 5.1 The if, if-else, and ternary constructs 5.1.1 The if construct and its flavors 5.1.2 Missing else blocks 5.1.3 Implications of the presence and absence of {} in if-else constructs 5.1.4 Appropriate versus inappropriate expressions passed as arguments to an if statement 5.1.5 Nested if constructs 5.1.6 Ternary construct 5.1.1 The if construct and its flavors 5.1.2 Missing else blocks 5.1.3 Implications of the presence and absence of {} in if-else constructs 5.1.4 Appropriate versus inappropriate expressions passed as arguments to an if statement 5.1.5 Nested if constructs 5.1.6 Ternary construct 5.2 The switch statement 5.2.1 Create and use a switch statement 5.2.2 Comparing a switch statement with multiple if-else constructs 5.2.3 Arguments passed to a switch statement 5.2.4 Values passed to the label case of a switch statement 5.2.5 Use of break statements within a switch statement 5.2.1 Create and use a switch statement 5.2.2 Comparing a switch statement with multiple if-else constructs 5.2.3 Arguments passed to a switch statement 5.2.4 Values passed to the label case of a switch statement 5.2.5 Use of break statements within a switch statement 5.3 The for loop 5.3.1 Initialization block 5.3.2 Termination condition 5.3.3 The update clause 5.3.4 Optional parts of a for statement 5.3.5 Nested for loop 5.3.1 Initialization block 5.3.2 Termination condition 5.3.3 The update clause 5.3.4 Optional parts of a for statement 5.3.5 Nested for loop 5.4 The enhanced for loop 5.4.1 Iteration with enhanced for loop 5.4.2 Limitations of the enhanced for loop 5.4.3 Nested enhanced for loop 5.4.1 Iteration with enhanced for loop 5.4.2 Limitations of the enhanced for loop 5.4.3 Nested enhanced for loop 5.5 The while and do-while loops 5.5.1 The while loop 5.5.2 The do-while loop 5.5.3 while and do-while block, expression, and nesting rules 5.5.1 The while loop 5.5.2 The do-while loop 5.5.3 while and do-while block, expression, and nesting rules 5.6 Comparing loop constructs 5.6.1 Comparing do-while and while loops 5.6.2 Comparing for and enhanced for loops 5.6.3 Comparing for and while loops 5.6.1 Comparing do-while and while loops 5.6.2 Comparing for and enhanced for loops 5.6.3 Comparing for and while loops 5.7 Loop statements: break and continue 5.7.1 The break statement 5.7.2 The continue statement 5.7.3 Labeled statements 5.7.1 The break statement 5.7.2 The continue statement 5.7.3 Labeled statements 5.8 Summary 5.9 Review notes 5.10 Sample exam questions 5.11 Answers to sample exam questions 6 Working with inheritance 6.1 Inheritance with classes 6.1.1 The need to inherit classes 6.1.2 Benefits 6.1.3 A derived class contains within it an object of its base class 6.1.4 Which base class members are inherited by a derived class? 6.1.5 Which base class members aren’t inherited by a derived class? 6.1.6 Derived classes can define additional properties and behaviors 6.1.7 Abstract base class versus concrete base class 6.1.1 The need to inherit classes 6.1.2 Benefits 6.1.3 A derived class contains within it an object of its base class 6.1.4 Which base class members are inherited by a derived class? 6.1.5 Which base class members aren’t inherited by a derived class? 6.1.6 Derived classes can define additional properties and behaviors 6.1.7 Abstract base class versus concrete base class 6.2 Use interfaces 6.2.1 Need for using interfaces 6.2.2 Defining interfaces 6.2.3 Types of methods in an interface 6.2.4 Implementing a single interface 6.2.5 A class can’t extend multiple classes 6.2.6 A class can implement multiple interfaces 6.2.7 Extending interfaces 6.2.8 Modifying existing methods of an interface 6.2.9 Properties of members of an interface 6.2.1 Need for using interfaces 6.2.2 Defining interfaces 6.2.3 Types of methods in an interface 6.2.4 Implementing a single interface 6.2.5 A class can’t extend multiple classes 6.2.6 A class can implement multiple interfaces 6.2.7 Extending interfaces 6.2.8 Modifying existing methods of an interface 6.2.9 Properties of members of an interface 6.3 Reference variable and object types 6.3.1 Using a variable of the derived class to access its own object 6.3.2 Using a variable of a superclass to access an object of a derived class 6.3.3 Using a variable of an implemented interface to access a derived class object 6.3.4 The need for accessing an object using the variables of its base class or implemented interfaces 6.3.1 Using a variable of the derived class to access its own object 6.3.2 Using a variable of a superclass to access an object of a derived class 6.3.3 Using a variable of an implemented interface to access a derived class object 6.3.4 The need for accessing an object using the variables of its base class or implemented interfaces 6.4 Casting 6.4.1 How to cast a variable to another type 6.4.2 Need for casting 6.4.1 How to cast a variable to another type 6.4.2 Need for casting 6.5 Use this and super to access objects and constructors 6.5.1 Object reference: this 6.5.2 Object reference: super 6.5.1 Object reference: this 6.5.2 Object reference: super 6.6 Polymorphism 6.6.1 Polymorphism with classes 6.6.2 Binding of variables and methods at compile time and runtime 6.6.3 Polymorphism with interfaces 6.6.1 Polymorphism with classes 6.6.2 Binding of variables and methods at compile time and runtime 6.6.3 Polymorphism with interfaces 6.7 Simple lambda expressions 6.7.1 Comparing passing values with passing code to methods 6.7.2 Syntax of lambda expressions 6.7.3 Interface Predicate 6.7.1 Comparing passing values with passing code to methods 6.7.2 Syntax of lambda expressions 6.7.3 Interface Predicate 6.8 Summary 6.9 Review notes 6.10 Sample exam questions 6.11 Answers to sample exam questions 6.1 Inheritance with classes 6.1.1 The need to inherit classes 6.1.2 Benefits 6.1.3 A derived class contains within it an object of its base class 6.1.4 Which base class members are inherited by a derived class? 6.1.5 Which base class members aren’t inherited by a derived class? 6.1.6 Derived classes can define additional properties and behaviors 6.1.7 Abstract base class versus concrete base class 6.1.1 The need to inherit classes 6.1.2 Benefits 6.1.3 A derived class contains within it an object of its base class 6.1.4 Which base class members are inherited by a derived class? 6.1.5 Which base class members aren’t inherited by a derived class? 6.1.6 Derived classes can define additional properties and behaviors 6.1.7 Abstract base class versus concrete base class 6.2 Use interfaces 6.2.1 Need for using interfaces 6.2.2 Defining interfaces 6.2.3 Types of methods in an interface 6.2.4 Implementing a single interface 6.2.5 A class can’t extend multiple classes 6.2.6 A class can implement multiple interfaces 6.2.7 Extending interfaces 6.2.8 Modifying existing methods of an interface 6.2.9 Properties of members of an interface 6.2.1 Need for using interfaces 6.2.2 Defining interfaces 6.2.3 Types of methods in an interface 6.2.4 Implementing a single interface 6.2.5 A class can’t extend multiple classes 6.2.6 A class can implement multiple interfaces 6.2.7 Extending interfaces 6.2.8 Modifying existing methods of an interface 6.2.9 Properties of members of an interface 6.3 Reference variable and object types 6.3.1 Using a variable of the derived class to access its own object 6.3.2 Using a variable of a superclass to access an object of a derived class 6.3.3 Using a variable of an implemented interface to access a derived class object 6.3.4 The need for accessing an object using the variables of its base class or implemented interfaces 6.3.1 Using a variable of the derived class to access its own object 6.3.2 Using a variable of a superclass to access an object of a derived class 6.3.3 Using a variable of an implemented interface to access a derived class object 6.3.4 The need for accessing an object using the variables of its base class or implemented interfaces 6.4 Casting 6.4.1 How to cast a variable to another type 6.4.2 Need for casting 6.4.1 How to cast a variable to another type 6.4.2 Need for casting 6.5 Use this and super to access objects and constructors 6.5.1 Object reference: this 6.5.2 Object reference: super 6.5.1 Object reference: this 6.5.2 Object reference: super 6.6 Polymorphism 6.6.1 Polymorphism with classes 6.6.2 Binding of variables and methods at compile time and runtime 6.6.3 Polymorphism with interfaces 6.6.1 Polymorphism with classes 6.6.2 Binding of variables and methods at compile time and runtime 6.6.3 Polymorphism with interfaces 6.7 Simple lambda expressions 6.7.1 Comparing passing values with passing code to methods 6.7.2 Syntax of lambda expressions 6.7.3 Interface Predicate 6.7.1 Comparing passing values with passing code to methods 6.7.2 Syntax of lambda expressions 6.7.3 Interface Predicate 6.8 Summary 6.9 Review notes 6.10 Sample exam questions 6.11 Answers to sample exam questions 7 Exception handling 7.1 Exceptions in Java 7.1.1 A taste of exceptions 7.1.2 Why handle exceptions separately? 7.1.3 Does exception handling offer any other benefits? 7.1.1 A taste of exceptions 7.1.2 Why handle exceptions separately? 7.1.3 Does exception handling offer any other benefits? 7.2 Categories of exceptions 7.2.1 Identifying exception categories 7.2.2 Class hierarchy of exception classes 7.2.3 Checked exceptions 7.2.4 Runtime exceptions 7.2.5 Errors 7.2.1 Identifying exception categories 7.2.2 Class hierarchy of exception classes 7.2.3 Checked exceptions 7.2.4 Runtime exceptions 7.2.5 Errors 7.3 Creating a method that throws an exception 7.3.1 Create a method that throws a checked exception 7.3.2 Handle-or-declare rule 7.3.3 Creating a method that throws runtime exceptions or errors 7.3.4 A method can declare to throw all types of exceptions, even if it doesn’t 7.3.1 Create a method that throws a checked exception 7.3.2 Handle-or-declare rule 7.3.3 Creating a method that throws runtime exceptions or errors 7.3.4 A method can declare to throw all types of exceptions, even if it doesn’t 7.4 What happens when an exception is thrown? 7.4.1 Creating try-catch-finally blocks 7.4.2 Using a method that throws a checked exception 7.4.3 Using a method that throws a runtime exception 7.4.4 Using a method that throws an error 7.4.5 Will a finally block execute even if the catch block defines a return statement? 7.4.6 What happens if both a catch and a finally block define return statements? 7.4.7 What happens if a finally block modifies the value returned from a catch block? 7.4.8 Can a try block be followed only by a finally block? 7.4.9 Does the order of the exceptions caught in the catch blocks matter? 7.4.10 Can I rethrow an exception or the error I catch? 7.4.11 Can I declare my methods to throw a checked exception instead of handling it? 7.4.12 I can create nested loops, so can I create nested try-catch blocks too? 7.4.13 Should I handle errors? 7.4.1 Creating try-catch-finally blocks 7.4.2 Using a method that throws a checked exception 7.4.3 Using a method that throws a runtime exception 7.4.4 Using a method that throws an error 7.4.5 Will a finally block execute even if the catch block defines a return statement? 7.4.6 What happens if both a catch and a finally block define return statements? 7.4.7 What happens if a finally block modifies the value returned from a catch block? 7.4.8 Can a try block be followed only by a finally block? 7.4.9 Does the order of the exceptions caught in the catch blocks matter? 7.4.10 Can I rethrow an exception or the error I catch? 7.4.11 Can I declare my methods to throw a checked exception instead of handling it? 7.4.12 I can create nested loops, so can I create nested try-catch blocks too? 7.4.13 Should I handle errors? 7.5 Common exception classes and categories 7.5.1 ArrayIndexOutOfBoundsException and IndexOutOfBoundsException 7.5.2 ClassCastException 7.5.3 IllegalArgumentException 7.5.4 NullPointerException 7.5.5 ArithmeticException 7.5.6 NumberFormatException 7.5.7 ExceptionInInitializerError 7.5.8 StackOverflowError 7.5.9 NoClassDefFoundError 7.5.10 OutOfMemoryError 7.5.1 ArrayIndexOutOfBoundsException and IndexOutOfBoundsException 7.5.2 ClassCastException 7.5.3 IllegalArgumentException 7.5.4 NullPointerException 7.5.5 ArithmeticException 7.5.6 NumberFormatException 7.5.7 ExceptionInInitializerError 7.5.8 StackOverflowError 7.5.9 NoClassDefFoundError 7.5.10 OutOfMemoryError 7.6 Summary 7.7 Review notes 7.8 Sample exam questions 7.9 Answers to sample exam questions 7.1 Exceptions in Java 7.1.1 A taste of exceptions 7.1.2 Why handle exceptions separately? 7.1.3 Does exception handling offer any other benefits? 7.1.1 A taste of exceptions 7.1.2 Why handle exceptions separately? 7.1.3 Does exception handling offer any other benefits? 7.2 Categories of exceptions 7.2.1 Identifying exception categories 7.2.2 Class hierarchy of exception classes 7.2.3 Checked exceptions 7.2.4 Runtime exceptions 7.2.5 Errors 7.2.1 Identifying exception categories 7.2.2 Class hierarchy of exception classes 7.2.3 Checked exceptions 7.2.4 Runtime exceptions 7.2.5 Errors 7.3 Creating a method that throws an exception 7.3.1 Create a method that throws a checked exception 7.3.2 Handle-or-declare rule 7.3.3 Creating a method that throws runtime exceptions or errors 7.3.4 A method can declare to throw all types of exceptions, even if it doesn’t 7.3.1 Create a method that throws a checked exception 7.3.2 Handle-or-declare rule 7.3.3 Creating a method that throws runtime exceptions or errors 7.3.4 A method can declare to throw all types of exceptions, even if it doesn’t 7.4 What happens when an exception is thrown? 7.4.1 Creating try-catch-finally blocks 7.4.2 Using a method that throws a checked exception 7.4.3 Using a method that throws a runtime exception 7.4.4 Using a method that throws an error 7.4.5 Will a finally block execute even if the catch block defines a return statement? 7.4.6 What happens if both a catch and a finally block define return statements? 7.4.7 What happens if a finally block modifies the value returned from a catch block? 7.4.8 Can a try block be followed only by a finally block? 7.4.9 Does the order of the exceptions caught in the catch blocks matter? 7.4.10 Can I rethrow an exception or the error I catch? 7.4.11 Can I declare my methods to throw a checked exception instead of handling it? 7.4.12 I can create nested loops, so can I create nested try-catch blocks too? 7.4.13 Should I handle errors? 7.4.1 Creating try-catch-finally blocks 7.4.2 Using a method that throws a checked exception 7.4.3 Using a method that throws a runtime exception 7.4.4 Using a method that throws an error 7.4.5 Will a finally block execute even if the catch block defines a return statement? 7.4.6 What happens if both a catch and a finally block define return statements? 7.4.7 What happens if a finally block modifies the value returned from a catch block? 7.4.8 Can a try block be followed only by a finally block? 7.4.9 Does the order of the exceptions caught in the catch blocks matter? 7.4.10 Can I rethrow an exception or the error I catch? 7.4.11 Can I declare my methods to throw a checked exception instead of handling it? 7.4.12 I can create nested loops, so can I create nested try-catch blocks too? 7.4.13 Should I handle errors? 7.5 Common exception classes and categories 7.5.1 ArrayIndexOutOfBoundsException and IndexOutOfBoundsException 7.5.2 ClassCastException 7.5.3 IllegalArgumentException 7.5.4 NullPointerException 7.5.5 ArithmeticException 7.5.6 NumberFormatException 7.5.7 ExceptionInInitializerError 7.5.8 StackOverflowError 7.5.9 NoClassDefFoundError 7.5.10 OutOfMemoryError 7.5.1 ArrayIndexOutOfBoundsException and IndexOutOfBoundsException 7.5.2 ClassCastException 7.5.3 IllegalArgumentException 7.5.4 NullPointerException 7.5.5 ArithmeticException 7.5.6 NumberFormatException 7.5.7 ExceptionInInitializerError 7.5.8 StackOverflowError 7.5.9 NoClassDefFoundError 7.5.10 OutOfMemoryError 7.6 Summary 7.7 Review notes 7.8 Sample exam questions 7.9 Answers to sample exam questions 8 Full mock exam 8.1 Mock exam 8.2 Answers to mock exam questions 8.1 Mock exam 8.2 Answers to mock exam questions Appendix—Answers to Twist in the Tale exercises A.1 Chapter 1: Java basics A.1.1 Twist in the Tale 1.1 A.1.2 Twist in the Tale 1.2 A.1.3 Twist in the Tale 1.3 A.1.4 Twist in the Tale 1.4 A.1.1 Twist in the Tale 1.1 A.1.2 Twist in the Tale 1.2 A.1.3 Twist in the Tale 1.3 A.1.4 Twist in the Tale 1.4 A.2 Chapter 2: Working with Java data types A.2.1 Twist in the Tale 2.1 (part 1) A.2.2 Twist in the Tale 2.1 (part 2) A.2.3 Twist in the Tale 2.2 A.2.4 Twist in the Tale 2.3 A.2.5 Twist in the Tale 2.4 A.2.1 Twist in the Tale 2.1 (part 1) A.2.2 Twist in the Tale 2.1 (part 2) A.2.3 Twist in the Tale 2.2 A.2.4 Twist in the Tale 2.3 A.2.5 Twist in the Tale 2.4 A.3 Chapter 3: Methods and encapsulation A.3.1 Twist in the Tale 3.1 A.3.2 Twist in the Tale 3.2 A.3.3 Twist in the Tale 3.3 A.3.1 Twist in the Tale 3.1 A.3.2 Twist in the Tale 3.2 A.3.3 Twist in the Tale 3.3 A.4 Chapter 4: Selected classes from the Java API and arrays A.4.1 Twist in the Tale 4.1 A.4.2 Twist in the Tale 4.2 A.4.3 Twist in the Tale 4.3 A.4.4 Twist in the Tale 4.4 A.4.1 Twist in the Tale 4.1 A.4.2 Twist in the Tale 4.2 A.4.3 Twist in the Tale 4.3 A.4.4 Twist in the Tale 4.4 A.5 Chapter 5: Flow control A.5.1 Twist in the Tale 5.1 A.5.2 Twist in the Tale 5.2 A.5.3 Twist in the Tale 5.3 A.5.4 Twist in the Tale 5.4 A.5.1 Twist in the Tale 5.1 A.5.2 Twist in the Tale 5.2 A.5.3 Twist in the Tale 5.3 A.5.4 Twist in the Tale 5.4 A.6 Chapter 6: Working with inheritance A.6.1 Twist in the Tale 6.1 A.6.2 Twist in the Tale 6.2 A.6.3 Twist in the Tale 6.3 A.6.4 Twist in the Tale 6.4 A.6.1 Twist in the Tale 6.1 A.6.2 Twist in the Tale 6.2 A.6.3 Twist in the Tale 6.3 A.6.4 Twist in the Tale 6.4 A.7 Chapter 7: Exception handling A.7.1 Twist in the Tale 7.1 A.7.2 Twist in the Tale 7.2 A.7.3 Twist in the Tale 7.3 A.7.4 Twist in the Tale 7.4 A.7.5 Twist in the Tale 7.5 A.7.1 Twist in the Tale 7.1 A.7.2 Twist in the Tale 7.2 A.7.3 Twist in the Tale 7.3 A.7.4 Twist in the Tale 7.4 A.7.5 Twist in the Tale 7.5 A.1 Chapter 1: Java basics A.1.1 Twist in the Tale 1.1 A.1.2 Twist in the Tale 1.2 A.1.3 Twist in the Tale 1.3 A.1.4 Twist in the Tale 1.4 A.1.1 Twist in the Tale 1.1 A.1.2 Twist in the Tale 1.2 A.1.3 Twist in the Tale 1.3 A.1.4 Twist in the Tale 1.4 A.2 Chapter 2: Working with Java data types A.2.1 Twist in the Tale 2.1 (part 1) A.2.2 Twist in the Tale 2.1 (part 2) A.2.3 Twist in the Tale 2.2 A.2.4 Twist in the Tale 2.3 A.2.5 Twist in the Tale 2.4 A.2.1 Twist in the Tale 2.1 (part 1) A.2.2 Twist in the Tale 2.1 (part 2) A.2.3 Twist in the Tale 2.2 A.2.4 Twist in the Tale 2.3 A.2.5 Twist in the Tale 2.4 A.3 Chapter 3: Methods and encapsulation A.3.1 Twist in the Tale 3.1 A.3.2 Twist in the Tale 3.2 A.3.3 Twist in the Tale 3.3 A.3.1 Twist in the Tale 3.1 A.3.2 Twist in the Tale 3.2 A.3.3 Twist in the Tale 3.3 A.4 Chapter 4: Selected classes from the Java API and arrays A.4.1 Twist in the Tale 4.1 A.4.2 Twist in the Tale 4.2 A.4.3 Twist in the Tale 4.3 A.4.4 Twist in the Tale 4.4 A.4.1 Twist in the Tale 4.1 A.4.2 Twist in the Tale 4.2 A.4.3 Twist in the Tale 4.3 A.4.4 Twist in the Tale 4.4 A.5 Chapter 5: Flow control A.5.1 Twist in the Tale 5.1 A.5.2 Twist in the Tale 5.2 A.5.3 Twist in the Tale 5.3 A.5.4 Twist in the Tale 5.4 A.5.1 Twist in the Tale 5.1 A.5.2 Twist in the Tale 5.2 A.5.3 Twist in the Tale 5.3 A.5.4 Twist in the Tale 5.4 A.6 Chapter 6: Working with inheritance A.6.1 Twist in the Tale 6.1 A.6.2 Twist in the Tale 6.2 A.6.3 Twist in the Tale 6.3 A.6.4 Twist in the Tale 6.4 A.6.1 Twist in the Tale 6.1 A.6.2 Twist in the Tale 6.2 A.6.3 Twist in the Tale 6.3 A.6.4 Twist in the Tale 6.4 A.7 Chapter 7: Exception handling A.7.1 Twist in the Tale 7.1 A.7.2 Twist in the Tale 7.2 A.7.3 Twist in the Tale 7.3 A.7.4 Twist in the Tale 7.4 A.7.5 Twist in the Tale 7.5 A.7.1 Twist in the Tale 7.1 A.7.2 Twist in the Tale 7.2 A.7.3 Twist in the Tale 7.3 A.7.4 Twist in the Tale 7.4 A.7.5 Twist in the Tale 7.5

Fair Use Source: OCA Java SE 8 Programmer I Certification Guide by Mala Gupta

outline_of_java_programming_language_study.txt · Last modified: 2024/04/28 03:20 (external edit)