The best book available for learning java (IMHO) is the
official BlueJ book. It is the COSC 121 text book at
Canterbury University. Covers the basics of object
orientated programming to more advanced stuff.
It uses bluej which is built an IDE for teaching java by
various university's around the world and is free.
Goto http://www.bluej.org/objects-first/ for the book