Thinking in Java - Eckel, Bruce (Prentice Hall, 2006)