Java Class Design
- Use access modifiers: private, protected, and public
- Override methods
- Overload constructors and other methods appropriately
- Use the instanceof operator and casting
- Use virtual method invocation
- Override methods from the Object class to i mprove the functionality of your class
- Use package and import statements
Advanced Class Design
- Identify when and how to apply abstract classes
- Construct abstract Java classes and subclasses
- Use the static and final keywords
- Create top-level and nested classes
- Use enumerated types
Object-Oriented Design Principles
- Write code that declares, implements and/or extends interfaces
- Choose between interface inheritance and class inheritance
- Develop code that implements "is-a" and/or "has-a" relationships
- Apply object composition principles
- Design a class using the Singleton design pattern
- Write code to implement the DAO pattern
- Design and create objects using a factory, and use factories from the API
Generics and Collections
- Create a generic class
- Use the diamond syntax to create a collection
- Analyze the interoperability of collections that use raw type and generic types
- Use wrapper classes and autoboxing
- Create and use a List, a Set and a Deque
- Create and use a Map
- Use java.util.Comparator and java.lang.Comparable
- Sort and search arrays and lists
String Processing
- Search, parse and build strings
- Search, parse, and replace strings by using regular expressions, using expression patterns for matching limited to: . (dot), * (star), + (plus), ?, \d, \D, \s, \S, \w, \W, \b. \B, [], ().
- Format strings using the formatting parameters: %b, %c, %d, %f, and %s in format strings.
Exceptions and Assertions
- Use throw and throws statements
- Use the try statement with multi-catch, and finally clauses
- Autoclose resources with a try-with-resources statement
- Create custom exceptions
- Test invariants by using assertions
Java I/O Fundamentals
- Read and write data from the console
- Use streams to read and write files
Java File I/O (NIO.2)
- Use the Path class to operate on file and directory paths
- Use the Files class to check, delete, copy, or move a file or directory
- Read and change file and directory attributes
- Recursively access a directory tree
- Find a file by using the PathMatcher class
- Watch a directory for changes by using WatchService
Building Database Applications with JDBC
- Define the layout of the JDBC API
- Connect to a database by using a JDBC driver
- Update and query a database
- Customize the transaction behavior of JDBC and commit transactions
- Use the JDBC 4.1 RowSetProvider, RowSetFactory, and RowSet interfaces
Threads
- Create and use the Thread class and the - Runnable interface
- Manage and control thread lifecycle
- Synchronize thread access to shared data
- Identify potential threading problems
Concurrency
- Use java.util.concurrent collections
- Apply atomic variables and locks
- Use Executors and ThreadPools
- Use the parallel Fork/Join Framework
Localization
- Read and set the locale by using the Locale object
- Build a resource bundle for each local
- Load a resource bundle in an application
- Format text for localization by using NumberFormat and DateFormat