Are you the type that has to know the "why" and "how" behind how a language behaves? Then this is the book you need... The Java Language Specification, Third Edition by James Gosling, Bill Joy, Guy Steele, Gilad Bracha. Provided you're buying it for the right reason, there's nothing close to it.
Contents: Introduction; Grammars; Lexical Structure; Types, Values, and Variables; Conversions and Promotions; Names; Packages; Classes; Interfaces; Arrays; Exceptions; Execution; Binary Compatibility; Blocks and Statements; Expressions; Definite Assignment; Threads and Locks; Syntax; Index
So why do I say "for the right reason"? Because if you pick it up expecting something else, you'll be highly disappointed. This is *not* a tutorial of the language, nor is it an easy-to-read conversation or discussion of Java. Instead, it's a computer engineering level coverage of how Java is structured and how it works, from the people who wrote it. As such, you're going to find information in here that you'll have a hard time getting elsewhere. You'll find out how the nitty-gritty of how things like classes and interfaces work, and how they *should* be structured. If you're just getting started in Java, you'll likely be over your head by the second chapter. The target of this type of writing would be people who are Java journeymen, and who have gotten to the point where they need to know some of the theory behind features and structure. You'll also need a book like this if you write development tools that target the Java environment. Armed with this book and a solid background in Java, you'll be able to produce software that behaves just as developers would expect.
Don't let the depth and complexity of the material steer you away from the book if you're ready to go deeper with Java. Just don't pick up the book expecting to learn Java for the first time. There are better books out there for that purpose. But if you need to understand the guts of Java, this is it.