Thinking in Java documents + code + Comments, thinkingjava
Disclaimer: I have no intention of infringing the copyright of the original author. All the documents that can be downloaded here are open for download by the author. They are placed here for unpredictable reasons that make it inconvenient to download the original document and code, therefore, we will unify the content I collected here. If the content here infringes on others, please inform me that I will delete it as soon as possible. Thank you for your understanding.
Java programming ideology (English Version 1st) + source code
Java programming ideology (English Version 2nd)
Java programming ideology (English Version 3rd) + source code
Java programming ideology (English Version 4th) part1, part2 + source code
Thinking in Patters v0.9 (Chinese Version)
Is Java programming a good book? Of course, the authors in the book explain in detail the origins of Java and the characteristics of the language. By studying this book, you can understand it (Java. After reading this book, you are not only a programmer who can write programs, but a professional programmer.
Can this book be used as an entry-level book? As a matter of fact, it is not difficult to get started with Java, just because its huge block header and relatively difficult content will make most beginners give up halfway. If you have no programming skills at all, of course you should not start with this. This is absolutely self-abuse.
How to quickly learn this book? Let's take a look at Java programming ideology version 3rd, skip chapter 1st, skip all theoretical knowledge from Chapter 2nd, enter all the code manually, debug successfully, and then look back at the relevant theoretical knowledge, you can understand how much you can read and how much you can't understand, and then you can go back and learn when you encounter it in practice.
How to study this book in depth? If you have strong willpower, you can start from version 1st and see that version 4th has a profound understanding of the development history of Java, I even know the development history of programming languages (this is important), because all languages are actually the same. After a language is understood, you will learn other languages (such as C ++ and Python) to understand the characteristics of the language. Why do you need to design the language like this? What is the best use case. If the language lacks some features due to the design requirements, how can this problem be solved. For example, Java 1.4 has no generics before, so version 3rd does not introduce generics, and version 4th introduces generics, so by comparing version 3rd and version 4th, you can understand the benefits of generics in depth, and know how to solve this problem through other means.