Create methods with arguments and return values, including overloaded methods
Apply the static keyword to methods and fields
Create and overload constructors; differentiate between default and user defined constructors
Apply access modifiers
Apply encapsulation principles to a class
Determine the effect upon object references and primitive values when they are passed into methods that change the values
Describe inheritance and its benefits
Develop code that makes use of polymorphism; develop code that overrides methods; differentiate between the type of a reference and the type of an object
Determine when casting is necessary
Use super and this to access objects and constructors
Differentiate among checked exceptions, RuntimeException, and Error
Create a try-catch block and determine how exceptions alter normal program flow
Describe the advantages of exception handling
Create and invoke a method that throws an exception
Recognize common exception classes and categories (such as NullPointerException, ArithmeticException, ArrayIndexOutOfBoundsException, ClassCastException)
Manipulate data using the StringBuilder class and its methods
Create and manipulate strings
Create and manipulate calendar data using classes from java.time.LocalDateTime, java.time.LocalDate, java.time.LocalTime, java.time.format.DateTimeFormatter, java.time.Period.
Declare and use an ArrayList of a given type
Write a simple Lambda expression that consumes a Lambda Predicate expression