I am sure a lot of people don't agree with this next statement, but:

I would recomend to a new programmer to learn Java first, then C++. The high level of object oriented-ness is a good practice in C++ and it lets you learn HOW to program and how to think like a programmer without worrying about memory management (although Qt takes a ton of load off this!) and some of C++'s other "advanced" features. (plus the syntax a VERY similar)

I don't, however, know any good Java books... I learned Java b/c it is similar to other modern OO languages and I just read though the Javadoc's :-) and started coding away :-)

Katrina