What are the best books to learn Java?
Java The Complete Reference, 8th Edition Herbert Schildt
Head First Java.Kathy Sierra, Bert Bates (this book is preferred for those people who are new to programming altogether)
and then for some deep learning and for creating strong base :
Thinking in Java Bruce Eckel
A Programmer’s Guide to Java Certification Khalid Mughal, Rolf Rasmussen
Effective Java Joshua Bloch
the above books are in no particular order.
As for web materials :
The Java™ Tutorials
A Friendly Place for Java Greenhorns