The two suggestions above are both excellent. I'm a huge fan of Eckel's Thinking in Java (a 4th edition of which is due in February), and The Java Tutorial is a great "go to" source when you're learning something new.
Another highly regarded book is Head First Java, which is probably better suited to beginners than Thinking in Java.
"We're kind of on the level of crossword puzzle writers... And no one ever goes to them and gives them an award." ~Joe Strummer sscce.org
It'd be good to know a bit about you, in order to recommend the best book(s)!
Such as: how much would you say you know about Java now? what prior experience do you have in scripting / programming / databases, etc...? Are you a hands-on learner? or do you prefer strict technical materials?
Personally, I'm enjoying "Head First Java".. it's a little slow moving from one concept to the next (from *my* perspective -- because I have quite a bit of prior programming experience) but it's a great format!
If you already know C+, you might just want to skip straight to a good reference book such as "Java in a Nutshell"...
...also, you mentioned ood. One of the best books on that topic is Object-oriented Design Heuristics by Riel, from way back in 1996. It gives many guidelines which will really help you understand designing with o-o and the tradeoffs involved. Riel's book is easy to read, but full of information. Occasionally I see inexperienced people shooting themselves in the foot, particularly by using design patterns where they don't belong. Knowing and understanding Riel's book will help prevent this - it gives you the tools you need to judge if a design is good or not, regardless of how many design patterns have or have not been crammed into it.
I have difficulty saying enough good things about this book. You can get other books explaining stuff like polymorphism or inheritance or what an abtraction is or how to use nouns/verbs to find classes and so on, but this book really is about object oriented DESIGN. It's good.
This book is underrated (even though it has 5 stars on amazon) and should be much more widely known by software developers, really on par with the GOF.
I purchased this book while taking a grad level o-o course. Get this book even if it means not eating for a little while (ok, maybe that's going a little too far!).
It would be nice if the book was updated, say to use UML for the diagrams and maybe Java or C# for examples, instead of C++.
But, these are niceties and should not be confused with the real value of the book contained within the design guidelines Riel spells out. The bulk of these guidelines are still true today and I think will remain true for a long time.
This is not a book on some fashionable technology which will be gone in a few years.