Thinking in Java by Bruce Eckel
Thinking in Java is a book suitable for students new to Java and object oriented programming. As such, intermediate to advance programmers may become bored working through this monstrous sized pile of pages. But the pace should be steady enough for beginners.
Those needing a quick refresher on the finer elements of Java may want to steer clear of Bruce Eckel’s work. At well over a thousand pages, this book is verbose. Each item is illustrated with multiple pages of code. At first I agreed with this strategy, as reading code is a crucial skill in learning how to program in any language. But the quality of the code examples seems drawn out. I don’t need to gloss through ten pages of code to understand something that could be summed up in a five line code snippet. And each code sample in the book is overly simple, ill reflective of production quality code found in the real world. I did (re)learn many Java tidbits while reading this book, but a condensed version would have been a better choice for me.
To summarize, if you are new to Java and object oriented programming, this book is a good choice. If you are just new to Java but know object oriented programming, I would search for a compact Java reference instead. And if you are familiar with Java I recommend finding a more advanced book than this one.