Certified Stamp

Certkey for Java2

You can purchase a wire bound printed version of this tutorial  for $US 21 plus P&P from http://www.cafepress.com/certkey4java

If you are studying for the Java 5 (JDK 1.5) Certified Programmers exam you may be interested in the following links http://www.examulator.com/tamer and http://www.examulator.com/phezam

The purpose of this tutorial

These pages are designed to help you pass the Sun Certified Java Programmers Exam. I have attempted to lay out the pages so they print out acceptably on A4 paper. It has been under active development for more than two years and incorporates feedback and corrections from many hundreds of people (thank you all). It is only available in this form, ie discrete web pages.

This tutorial is designed mainly for final cramming rather than in-depth study and learning. It assumes that you already know the basic principles of programming from a language such as C/C++ or Visual Basic and that you can set up your Java environment to create and run Java programs. It doesn't try to make you a good programmer, or even a good Java programmer, it just tries to get you through the exam by concentrating narrowly on the objectives.

It assumes that you know stuff like the difference between an application and an applet and that Java is case sensitive. If you don't know this type of stuff take a look at my online introductory course at http://www.examulator.com/moodle

Two other books for beginning Java programmers are Peter van der Lindens Just Java And Beyond and the O’Reilly Java In a Nutshell Deluxe Edition which comes with the Nutshell book plus the text on a CD ROM and the text of 4 other books on the CD ROM.

Can't afford the Technical Books?

If you find Technical books are not affordable, you you may like to check out the links I am putting in to free tutorial information on the net. These are generally web sites, but one is the excellent book by Bruce Eckel "Thinking in Java". This is freely downloadable and is an excellent general Java book. See http://www.bruceeckel.com for the links. You can find the Java Glossary and a huge amount of excellent links organised by the unique Roedy Green at http://mindprod.com/jgloss.html

For the final arbiter on the Java language check out the Java Language Specification, sometimes called the JLS. This can answer the really tricky questions and the sneaky ones like "is null a keyword".You can find the JLS at


The licence for this tutorial

Anyone can download and print out this tutorial for personal use. Please contact me if you wish to use it for any other purpose.

Purchase the pdf version

For a more satisfying reading experience, you can purchase CertKey a version of this tutorial in pdf format with comprehensive index see http://www.jchq.net/homepage/certkeyflier.php With CertKey you will receive an id allowing access to a database of mock exam questions.

For information on other Certification books and resources see my Java Certification FAQ at


For a professional Exam simulator with plenty of study material, take a look at



Section Title: Declarations and Access Control

  1. Write code that declares constructs and initializes arrays of any base type using any of the permitted forms both for declaration and for initialization.

  2. Declare classes inner classes methods instance variables static variables and automatic (method local) variables making appropriate use of all permitted modifiers (such as public final static abstract and so forth). State the significance of each of these modifiers both singly and in combination and state the effect of package relationships on declared items qualified by these modifiers.

  3. For a given class determine if a default constructor will be created and if so state the prototype of that constructor .

  4. State the legal return types for any method given the declarations of all related methods in this or parent classes.


Section Title: Flow Control and Exception Handling

  1. Write code using if and switch statements and identify legal argument types for these statements.

  2. Write code using all forms of loops including labeled and unlabeled use of break and continue and state the values taken by loop counter variables during and after loop execution.

  3. Write code that makes proper use of exceptions and exception handling clauses (try catch finally) and declare methods and overriding methods that throw exceptions.

  4. Recognize the effect of an exception arising at a specified point in a code fragment. Note: The exception may be a runtime exception, a checked exception, or an error (the code may include try, catch, or finally clauses in any legitimate combination).

  5. Write code that makes proper use of assertions, and distinguish appropriate from inappropriate uses of assertions Identify correct statements about the assertion mechanism.


Section Title: Garbage Collection

  1. State the behavior that is guaranteed by the garbage collection system and write code that explicitly makes objects eligible for collection.


Section Title: Language Fundamentals

  1. Identify correctly constructed package declarations import statements, class declarations (of all forms including inner classes) interface declarations and implementations (for java.lang.Runnable or other interface described in the test) method declarations (including the main method that is used to start execution of a class) variable declarations and identifiers.

  2. Identify classes that correctly implement an interface where that interface is either java.lang.Runnable or a fully specified interface in the question.

  3. State the correspondence between index values in the argument array passed to a main method and command line arguments.

  4. Identify all Java programming language keywords. Note: There will not be any questions regarding esoteric distinctions between keywords and manifest constants.

  5. State the effect of using a variable or array element of any kind when no explicit assignment has been made to it.

  6. State the range of all primitive data types and declare literal values for String and all primitive types using all permitted formats, bases and representations.


Section Title: Operators and Assignments

  1. Determine the result of applying any operator including assignment operators and instanceof to operands of any type class scope or accessibility or any combination of these.

  2. Determine the result of applying the boolean equals(Object) method to objects of any combination of the classes java.lang.String java.lang.Boolean and java.lang.Object.

  3. In an expression involving the operators & | && || and variables of known values state which operands are evaluated and the value of the expression.

  4. Determine the effect upon objects and primitive values of passing variables into methods and performing assignments or other modifying operations in that method.


Section Title: Overloading, Overriding, Runtime Type and Object Orientation

  1. State the benefits of encapsulation in object oriented design and write code that implements tightly encapsulated classes and the relationships "is a" and "has a".

  2. Write code to invoke overridden or overloaded methods and parental or overloaded constructors; and describe the effect of invoking these methods.

  3. Write code to construct instances of any concrete class including normal top level classes inner classes static inner classes and anonymous inner classes.


Section Title: Threads

  1. Write code to define instantiate and start new threads using both java.lang.Thread and java.lang.Runnable

  2. Recognize conditions that might prevent a thread from executing .

  3. Write code using synchronized wait notify and notifyAll to protect against concurrent access problems and to communicate between threads. Define the interaction between threads and between threads and object locks when executing synchronized wait notify or notifyAll.


Section Title: The java.lang package

  1. Write code using the following methods of the java.lang.Math class: abs ceil floor max min random round sin cos tan sqrt.

  2. Describe the significance of the immutability of String objects

  3. Describe the significance of wrapper classes, including making appropriate selections in the wrapper classes to suit specified behaviour requirements, stating the result of executing a fragment of code that includes an instance of one of the wrapper classes.


Section Title: The java.util package

  1. Make appropriate selection of collection classes/interfaces to suit specified behavior requirements.

  2. Distinguish between correct and incorrect implementations of hashcode methods.

Objectives exclusivly for the JDK1.2 Certification Exam


    Section Title: Writing listener code

    6. Write code to implement listener classes and methods and in listener methods extract information from the event to determine the affected component, mouse position nature and time of the event. State the event classname for any specified event listener interface in the java.awt.event package.


Section Title: The Java.awt package - Layout

  1. Write code using component container and layout manager classes of the java.awt package to present a GUI with specified appearance and resize the behavior and distinguish the responsibilities of layout managers from those of containers.


Section Title: The Java.io package

  1. Write code that uses objects of the file class to navigate a file system.

  2. Write code that uses objects of the classes InputStreamReader and OutputStreamWriter to translate between Unicode and either platform default or ISO 8859-1 character encodings.

  3. Distinguish between conditions under which platform default encoding conversion should be used and conditions under which a specific conversion should be used.

  4. Select valid constructor arguments for subclasses from a list of classes in the java.io package.

  5. Write appropriate code to read, write and update files using FileInputStream, FileOutputStream, and RandomAccessFile objects.