I'm on my first year of studying computer science at university and so far the focus is mainly on Java when it comes to creating applications. I'm quite the amateur still, but here are a few things I used/use to learn.
First of all, we used the following book in the 2nd Java course we had, but I found it to be a lot better than the first introductory book we used, and also explained many of the other advanced features of Java. It also gives you a basic understanding of Object-oriented programming if not more.
Title: Object-Oriented Design & Patterns (2nd edition, but there might be newer)
Author: Cay Horstmann
ISBN: 0-471-74487-5
It might be a little expensive, I'm not sure, but you might be able to find it cheaper on the net somewhere or at a library. If you're not willing to or don't have the money to spend on such things, then I'd definitely go with Method's link :). I just find it easier when I have a book in front of me (The irony ¬_¬ )
The Java API: I still use this a whole lot when trying to figure out which methods, classes, libraries are at my disposal when I use Java.
It might look pretty overwhelming at first, but everyone I know swear by it, including myself :P
http://java.sun.com/j2se/1.5.0/docs/api/Lets say I wanted to know what the String class was and how it worked.
I'd open up the above link to the Java API, then in the lower left section of the screen with all the links and names, I'd find the link called 'String', click it and find loads of useful information about the entire class, its methods, constructors, parameters etc. etc.
Other than that, I found a lot of information by googling around or simply asking others. At the end of the day it all comes down to how much time and effort you put into it, just don't start out by creating complicated projects. The more you know your basics, the easier you'll be able to learn the advanced features, so just take it nice and easy :sasmokin:.