· Variable, Constant, Identifier, Reserved word, Scope, Case sensitive
· Operator, Precedence, Cast
· Array
· Primitive data, Object, Reference, Alias
· Class, Object, Inheritance, Polymorphism
· Assignment, Widening conversion, Narrowing conversion
· Constructor, Destructor (finalize()), Garbage collection
· Static methods and variables vs. instance methods and variables
· Private, Public, Protected
· Method signature, Overloaded method, Formal and Actual parameters, this, super
· String, Concatenation, Escape sequence, white space
· Byte code, Interpreter, Compiler
· Pre-test, Post-test, and Counter controlled loops
· Boolean, Block statement, condition
· Using the Java API classes and interfaces, e.g. Random, StringTokenizer, System, DecimalFormat, Math, Comparable
· Operators (++,--,+,-,*,/,==,=,%,?,+=,*=)
· Primitive types versus object types:
o String compare, initialization, and concatenation.
o Aliases, null pointers,
o Methods equals() and compareTo()
· Control constructs:
o if (<exp>) <statement> [else <statement>]
o while (<exp>) <statement>
o do <statement> while (<exp>);
o for (<exp>; <exp>; <exp>) <statement>
· Methods: signature, body, parameter passing.
· Declaring arrays, Initialization list
· Classes: Inheritance (extends), Polymorphism via subclasses and interfaces, abstract classes
· Built in interfaces (Comparable, Iterator)
· Syntactical conventions
o When and how much to indent
o Reasonable identifier names
o Single purpose methods without side-effects and reasonable size
o Limit the scope of variables
· Common programming pitfalls
o Comparing objects without equals() or compareTo()
o Implicit type conversions (System.out.println(“ “+3+2);)
o Exceeding maximum numbers
· Debugging techniques
o Be structured, change one thing at a time
o Don’t make changes without being sure why
o Utilize available debugging tools (breakpoints, variable values, step)