I wouldn't buy books on Java to start with. If you want books, look for generic books without a language (an algorithmic book); programming is a concept itself, the language is simply a tool, and while you need to learn how to use a tool its useless if you don't know what you have to accomplish in the first place. There are (literally) thousands of tutorials on the net for Java programming from basic to advanced, I'd start there to see if you are even interested in programming at all.
To answer your question, Java and C# are probably among the best two to start with (and share so many features they are almost [but not quite] compatible with each other O.o) for learning object oriented programming. Java lacks a few features that I wish it had (for example, signed control of your variables), but has a huge advantage of cross platform compatibility. In particular, the swing library in java allows you to easily create light-weight GUI components that are designed to work on any system the java runtime is installed on.
Java is a great balance on what you can do and what it will do for you which is why I think its a good starting language. Java uses a memory manager to allocate and deallocate memory, so you don't need to initially learn how to control your memory at all (compared to C/C++ where you must allocate and free your own memory). It features many of the same functionality, input and output, variable handling and operations, libraries for database connectivity and graphical interfaces and so on. So yeah, I think java is a good starting language.
Once you learn how to program then you learn how to use a language. The more languages you learn the more often you'll select the proper language for the job. I wouldn't use Java to read and parse gigabytes worth of data since its too slow, but I would use java if I want a program to have maximum compatibility with minimal effort on my part.
BTW, alternative languages to learn would include python, ruby, C# and C++. You may want to peek and VB.NET to see how its syntax differs from that of a C based language like C# and Java; I myself absolutely hate VB, but there are many many people who disagree with me and much prefer the syntax over the C# (comparable only because the .NET environment will allow you the same functionality for either C# or VB or a combination of both).
I wouldn't lean towards ruby since IMO its dying off. Python may be a good one to work on though as that appears to be on its way up.