Part II moves on to actual programs, and how to use features efficiently. We start with a look at string handling in chapter nine. This is likely to catch a lot of people off-guard, and cause all kinds of problems, but not if they read this book first. Various string issues appear, including operator precedence, conversion, characters, and so on. Chapter ten covers a favorite topic of mine, exception handling.
Exceptions have to be one of the greatest features ever.
They can potentially make code so much more understandable and robust that it is a minor miracle that all languages don't have them. Threads are always a hard topic. Understanding them shouldn't be too bad, but they are so tricky to use, when there are shared resources. This gives rise to the coincident topic of synchronization. Java seems to have a very good selection of primitives to handle these.