First of all, I can hardly believe this myself, but I've pinched myself and I'm not dreaming! I know the actual questions one gets are random, so there's certainly some luck involved with this. I haven't even scored close to 100% on any of the practice exams... but each time, I made sure I knew why I got the answer wrong. If I just couldn't get it, I would try compiling the code... or asking around here in the forums.
The $75 Sun practice exams were worth it to me, but they did not use the actual exam's user interface. The UI on the exam is slightly better-- it will not let you select too many answers. The practice exams did not show the elapsed time or the question numbers. Having those on the real exam helped me pace myself.
I started with the Sybex 4th edition Complete J2C (1.4), by Heller & Roberts (nominally also by a designer of the Sun tests) and went through it once, but gave up on it after too much errata and practice test questions that had answers that were dated, such as the distinction between keywords and literals which Sun explicitly denied. The book also came on the CD as a PDF, but I had to install bunch of stuff to get it to work, so it was a hassle.
I bought the the Osborne SCP&D for Java 2, what folks around here affectionately refer to as K&B, last October. It was much easier to read, the CD has the chapters in plain PDF without the added hassle. It was just plain good, plus it led me to this site from literally the first page past the copyright notice. It was printed in 2003, but it had most of the errata online taken into account (though not always accurately-- I sent an email to K a few months back with my take on it).
I studied off and on, reading through the K&B once, taking the practice exams after each section, and finding all the online practice exams I could find. A few days before the exam, I went through the first 8 of Dan Chisholm's exams (linked from here). They were good, but very, very tough in places. I retook the Sun practice exams (your $75 gets you 3 different sets of questions, (with answers explained) which you can take over and over again.) ... and I skimmed through the K&B once more, reading the bold sections, and taking the practice questions again. It was a great help.
A few small things not emphasized in K&B, that I picked up elsewhere:
Big Farms Need Red Tractors (Dan Chisholm) - the list of valid character escape codes \b \f \n \r and \t, along with \\, \", and \'.
~ shortcut - change the sign and subtract one
To get the 2's complement negative value from the positive value, subtract one and invert
To get the 2's complement positive value from the negative value, invert and add one
I couldn't keep those straight, so I just remember the bit patterns for 1, 0, and -1 (FFFF). Need to get the negative of a number? What did I have to do to get -1 from 1? Just do the same...
Surprises. I wasn't allowed to take my water bottle in with me. The exam room was under video observation. Neither was a big deal. I also discovered I went through the exam in about an hour. I went over the questions I marked for review and answered those as best as I could.
Then, I went back to the beginning of the exam and stepped through each question and thought very hard about tricks on each one. Several answers I changed after staring at them for a few minutes, and getting an "aha!" moment. I didn't think I'd be able to review all of them this thoroughly in the remaining time, but I kept at it, and finished with about 20 minutes to spare. Then I did what for me was the hardest thing-- I clicked submit, rather than try to review things even more. The rest, as they say, is history.
Interestingly enough, I found an error in one of the Sun questions. I brought up a question a few weeks ago about how most checked exceptions have to actually be thrown in order for the compiler to let you use "throws X" on the declaration line for a method. This was because one of the Sun practice exams took advantage of the fact that this checking is not performed for "Exception" but is for subclasses. That is, throws X with an empty method won't compile. Well, the actual Sun exam had something similar, but it didn't affect the answer... but it was interesting to see.
Thanks so much to K&B, JavaRanch, Dan Chisholm, Marcus Green, and all you folks in the forums for your answers and guidance.
Sincerely, Joseph Maddison
P.S. Thanks again for K&B, especially the coverage of assertions!