What does it take to become a good Java programmer? What makes the difference between the mediocre and the outstanding? Talent notwithstanding, even nerds born to program should consider my suggestion. The path to success might differ between people, but there is one essential ingredient that nobody can leave out.
So I recommend every Java programmer take a Sun Certification test. Sun Certification tests are rigorous tests that dig into all aspects of the Java language, from the basics, like size of primitives, to the advanced, like garbage collection. Since there are several types of tests, I advise taking at least the Sun Certified Java Programmer (SCJP) test. It'll get you acquainted with what's happening behind the IDE's window. For example, widening primitive conversion in arithmetic operations:
int i = 1;
long l = 2L;
long res = i + l;
The knowledge gained from taking the certification test will help you prevent bugs before the code hits the monitor's pixels. I've seen some stupid bugs in my time that could very easily have been prevented with a little fundamental knowledge of Java. What about learning the material without taking the test? It's possible for the self-disciplined, but most people don't study unless there's going to be an exam.