Possible Duplicates:
What are the best resources for learning Java (books, websites, etc.)?
Best Java book you have read so far

I have a friend whose father owns a bookstore (lucky him huh?) and he said he'll let me pick a book for free. I've been wanting to learn how to program, and I've heard some good things about Cay Horstmann books, so of his three books, what should I choose? 1. Big Java 2. Core Java (both volumes) 3. Java Concepts

I've also heard good things about Head First Java, but I've already decided against getting it.

Responses would be greatly appreciated!

edit This question is closed now, but I really appreciated the answers, thanks guys!

+1  A: 

I learnt Java at university with Big Java. Highly recommended and I keep it on my bookshelf for whenever I need it.

Some of my other textbooks I sold as they where no good.

Kieran Andrews
Oww... apostrophes. You shouldn't have put any in that answer. I'm not trying to be a gnazi; reading that seriously hurt!
I actually read through the first couple chapters of Big Java. It WAS very good, but I'm wondering if the other books are better lol. It's kinda like choosing your first pokemon huh?
Thanks, sorry it was early morning.I choose you pikachu!
Kieran Andrews
+1  A: 

Try doing a search in the site looking for books with a java tag. Searching for: [java] books.

You will get some good answers like in this thread.

ah, you're very subtle. Thanks for the tip though.

what about another choice? Java for everyone ( from Wiley Publication)! You can see a preview on google books.

Morteza M.

If you really want to understand Java deeply, get Josh Bloch's "Effective Java" and "Java Puzzlers"

+2  A: 

None of them. Read all of the documentation on Sun's website, starting with the tutorials if you are a beginner.

I second that. It is full of examples, it teaches you from the very basics to the most groundbreaking apis (like java.util.concurrent). If you know other OO languages, this can be done in very few days. If you don't, take your time, as these things take time to sink in.
Daniel Ribeiro
+1  A: 

The first thing you need to understand is that Java, the language is very simple. It can be completely defined in about 20 pages of a book, and fully covered with examples in 100.

The problem is that you can't do anything useful with Java the language. What you need to understand is the Java libraries. And then you find trouble. There are hundreds if not thousands of libraries. There are probably close to 100 libraries in just the basic Java SE.

Learning to use the libraries effectively is very complex. I strongly recommend as others have that you not use Java first. Python is probably the most mainstream modern language. I like Scala and Haskell, but they are a bit non-traditional.

*"It can be completely defined in about 20 pages of a book"* - That is a gross exageration. An **introduction** to (just) the Java core language in 20 pages will be superficial and incomplete. The Java language specification edition 3 (which **defines** the language) is 688 pages long!!
Stephen C

I found the free thinking in java series very useful.