Thinking in Java - Eckel, Bruce (pearson, 2006)