As part of my main assignment I have been doing a lot of Java programming recently and found the following books to be very useful:
Effective Java: Second Edition
This book contains some very useful advice and suggestions. It contains real examples and teaches you valuable tips to become a better programmer. Its quite a thin book, but it does contain a lot of good material.
Java Performance Tuning
This is a much bigger book than Effective Java, and I find I am using it more as a reference book. It contains lots of advanced tips for improving enterprise applications.