| Essential: |
| declare and use simple local variables | |
| write and use methods, both void and with return types, and both
static and non-static | |
| declare and use Strings and their standard methods | |
| declare and use method parameters | |
| declare, allocate, and use arrays (including finding their
lengths), both 1-dimensional and 2-dimensional | |
| use common algebraic operators: +, -, *, /, %, <, >, ==,
<=, >=, &&, ||, !, String concatenation | |
| Know the difference between == and equals | |
| use assignment, autoincrement and autodecrement operators: =, +=,
-=, ++, -- | |
| use "if", "if...else", "while", "for" statements for flow of
control | |
| write code in multiple, separately-compiled source files | |
| allocate heap memory (new) | |
| declare and use classes with instance variables | |
| declare and use class constructors; know whether there's a
default constructor | |
| perform buffered text output with "print", "println", and
"toString" | |
| define classes by composition, and know when to do so | |
| define classes by inheritance, and know when to do so | |
| declare and use private and public methods and instance
variables, and know when to do so | |
| override methods and constructors of superclasses in
subclasses | |
| invoke methods and constructors of superclasses in
subclasses | |
| be able to predict by looking at the code which version of a
method will be invoked | |
| override the standard "toString" method | |
| declare and use abstract classes and abstract methods | |
| declare and use interfaces (i.e. super-abstract classes), and
know when to do so | |
| write "try...catch..." blocks to handle standard exceptions | |
| Important: |
| know the ranges of primitive types, and the syntax for their
literals | |
| overload functions, methods, and constructors, i.e. write several
w/same name but different parameters | |
| declare and use named constants | |
| use "import" statements | |
| use standard math routines from the Math class | |
| use javadoc comments appropriately | |
| use "do...while", "switch", "break", and "continue"
statements | |
| use explicit type casting; know how it differs from C-style
casting | |
| write Applets, overriding the standard methods such as init and
paint | |
| use standard GUI components such as JButton, JLabel, JTextField,
etc. | |
| use standard layout managers such as FlowLayout, GridLayout,
BorderLayout, etc. to position GUI components on the screen | |
| handle asynchronous input events from the keyboard, mouse, and
GUI components via the "listener" mechanism | |
| separate the internal model of a display from its graphical
appearance and user-interaction behavior (the "model-view-controller
framework") | |
| perform buffered input with "read", "Integer.parseInt",
etc. | |
| use Files, InputStreams, OutputStreams, etc. | |
| access networked resources with URL's | |
| use "assert" statements | |
| declare and use packages | |
| declare and use protected and default (package-private) methods
and instance variables, and know when to do so | |
| declare and throw user-defined exceptions; write "try...catch..."
blocks to handle them | |
| use standard wrapper classes (e.g. Integer, Double) | |
| use standard container classes (e.g. ArrayList, LinkedList) and
their Iterators | |
| define and use anonymous and named inner classes, and know when
to do so | |
| write wait-loops using Thread.sleep | |
| declare and use final parameters | |
| declare classes and/or methods final, and know when to do
so | |
| override the standard "equals" and "hashCode" methods | |
| write multi-threaded code using Runnable or subclassing
Thread | |
| synchronize threads using "synchronized", Thread.join,
Thread.wait, and Thread.notify | |
| use Loggers | |
| use and define generic types (new in 1.5) | |
use and define enum types (new in 1.5) | |
use the built-in Scanner class (new in 1.5) to
parse input | |
| Obscure: |
| use Observers and Observables to implement the
model-view-controller framework | |
| write Servlets | |
| write methods with a variable number of arguments (new in
1.5) | |