Declarations, Initialization and Scoping
- Develop code that declares abstract and all forms of nested classes.
- Develop code that declares an interface implements or extends one or more interfaces.
- Develop code that declares, initializes, and uses primitives, arrays, enums, and objects as static, instance, and local variables.
- Able to determine if a method is correctly overriding or overloading another method, and identify legal return values for the method.
- Given a set of classes and superclasses, develop constructors for one or more of the classes.
- Able to determine if a default constructor will be created, and if so, determine the behavior of that constructor.
- Given a nested or non-nested class listing, able to write code to instantiate the class.
Flow Control
- Develop code that implements an if or switch statement.
- Develop code that implements all forms of loops and iterators, including the use of for, for-each, do, while, labels, break, and continue.
- Develop code that makes use of assertions, and distinguish appropriate from inappropriate uses of assertions.
- Develop code that makes use of exceptions and exception handling clauses (try, catch, finally), and declares methods and overriding methods that throw exceptions.
- Recognize the effect of an exception arising at a specified point in a code fragment which may be a runtime exception, a checked exception, or an error.
- Recognize situations that will result in any of the following being thrown: ArrayIndexOutOfBoundsException,ClassCastException, IllegalArgumentException, IllegalStateException, NullPointerException, NumberFormatException, AssertionError, ExceptionInInitializerError, StackOverflowError or NoClassDefFoundError.
- Writting code to navigate file systems, reading from files, writing to files, or interacting with the user, develop the correct solution using java.io: BufferedReader, BufferedWriter, File, FileReader, FileWriter, PrintWriter, and Console.
- Develop code that uses the primitive wrapper classes (such as Boolean, Character, Double, Integer, etc.), and/or autoboxing & unboxing. Discuss the differences between the String, StringBuilder, and StringBuffer classes.
- Use standard J2SE APIs in the java.text package to correctly format or parse dates, numbers, and currency values for a specific locale.
- Write code that uses standard J2SE APIs in the java.util and java.util.regex packages to format or parse strings or streams.
Working on concurrency
- Write code to define, instantiate, and start new threads using both java.lang.Thread and java.lang.Runnable.
- Recognize the states in which a thread can exist, and identify ways in which a thread can transition from one state to another.
- Write code that makes appropriate use of object locking to protect static or instance variables from concurrent access problems.
Good object oriented concept
- Develop code that implements tight encapsulation, loose coupling, and high cohesion in classes.
- Given a scenario, develop code that demonstrates the use of polymorphism. Further, determine when casting will be necessary and recognize compiler vs. runtime errors related to object reference casting.
- Explain the effect of modifiers on inheritance with respect to constructors, instance or static variables, and instance or static methods.
- Develop code that declares and/or invokes overridden or overloaded methods and code that declares and/or invokes superclass, or overloaded constructors.
- Develop code that implements "is-a" and/or "has-a" relationships
Working on Collections / Generics
- Able to determine which collection classes and/or interfaces should be used to properly implement that design, including the use of the Comparable interface.
- Distinguish between correct and incorrect overrides of corresponding hashCode and equals methods, and explain the difference between == and the equals method.
- Write code that uses the generic versions of the Collections API, in particular, the Set, List, and Map interfaces and implementation classes.
- Able to recognize the limitations of the non-generic Collections API and how to refactor code to use the generic versions. Write code that uses the NavigableSet and NavigableMap interfaces.
- Develop code that makes proper use of type parameters in class/interface declarations, instance variables, method arguments, and return types
- Use the java.util package to write code to manipulate a list by sorting, performing a binary search, or converting the list to an array.
- Use the java.util package to write code to manipulate an array by sorting, performing a binary search, or converting the array to a list.
- Use the java.util.Comparator and java.lang.Comparable interfaces to affect the sorting of lists and arrays.