Hi there,
I just cleared the SJCP 1.5 for Tiger with 93%. I just want to share some impressions with you, since this info seems not to be available on these forums....
The preparation:
Since I have enough experience on
Java 1.4, less on Java 1.5, I did not study too much for this exam. The total time allocated to the exam was approx. 1 week (3 weekends). (Once again: I knew a something about it)
The big new additions you must learn (as you may know) for the 1.5 exam are the generics, the covariant return type (less typing!
you should learn how to use it asap), the new Formatter and Scanner classes plus the additions on IO classes, and some other stuff like varargs, out/inboxing (autoboxing), the "enhanced" for loop, which is not really enhanced, etc. Sprintf cabilities which were added for
string will make you life at work a lot more pleasant.
You need to study those differences, all of them, and pay some attention to the "flavous". I did not study any book, but instead I read carefully the tutorials for Java 1.5 (you find them in the std docs), then I read parts of the java specs, writting down on a yellow notebook each surprise I had.
Some examples:
for(final int i : arr) {} //this is valid
X.<String, StringBuffer>foo() // valid call
Integer x1 = 4; Integer x2 = 4; if(x1 == x2) {} //true
I reviewed also the standard documentation, making some little UML schemas for each class I was interested into (old as well as new). Drawing interfaces that a class implements may help you actually in the study, since pushes away your need to memorize things (at least for me).
The only mock exams that I've done were the one from the JavaRanch (thanks for sharing!). At this time, seems that only 1.4 exams are available. There are some questions about generics out there (Kathy Sierra & Bert Bates released 11 questions).
Because of this, I started experimenting with Java 1.5: each new language addition was put in some small programs each
testing some desired /undesired behaviour. This explained some of the cluttered parts (generics, the non-trivial part, plus others as well). This will give you also explanations why it is behaving in some way or the other.
Good luck !