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) | |