If you're studying for the SCJP exam, this is **the** book.
The structure of the book is beautiful, although the chapters vary wildly in length. Every paragraph has bold, visible headings for easy navigation, there are side-bars of all sorts everywhere, the most useful being the "exam watch" which highlight some tricky parts of the exam. At the end of every chapter, there is a tremendously useful self-test section, broad enough to encompass most of the important concepts and exam tricks for that particular chapter.
The self-tests are fantastic to strengthen your knowledge, make the concepts and ideas stick and, very importantly, learn to watch out for the exam tricks and traps: missing semi-colons, missing exception handling (I find that one so nasty. From the mock exams, it seems most common in complex threading questions), instance variable read from static main(), discrete ++ increment of a final variable deep inside a loop...
Additionally, the book caters as much as possible to different styles of learning (and reading!), by repeating and summarising the same information in diagrams, exercises, tables, and full recaps with bullet points at the end of every chapter. It all gets very handy as the exam gets closer and you don't have time to dive in deeply anymore.
I liked the sparse "on the job" sidebars to highlight some of the differences between real life and the exam. The humour in the book doesn't distract and can make the reading flow more pleasantly, though if you're not interested in a topic nothing will help (file I/O in Java kills me... Perl, Perl, Perl!)
Form-wise, the book is big and thus cumbersome, but surprisingly light so not too painful to carry around. PDFs of every chapter are provided on the accompanying CD, though I wasn't impressed when trying them on a friend's Sony e-reader.
Note for Linux users: the quiz/mock exam software on the CD runs fine under Wine (the only one out of 3 SCJP training software products I tried! None of them written in Java, funnily enough.)