Another good book which I recommend quite often is head first java. It covers a wide variety of topics in depth. It also gives you an introduction to some more complicated concepts. I suggest you...