I'm currently reading a Java textbook, so a couple topics come to mind
I found learning UML diagramming - although seemingly boring at first - to be extremely catalytic in understanding OOP more concretely.
Also, although not Java, learning Binary and the OSI model have been really valuable supplementary studies. Especially binary - once you understand binary thoroughly, all primitive data types, ascii values and certain operators like bitshift suddenly become demystified. Boolean algebra helps too!
Two fantastic reads:
Head First Java
Deitel Developer Series' Java for Programmers, 2nd Edition
The former is in my opinion THE ONLY book for beginner programmers, and the latter is more down-to-business. In Head First Java you will get great analogies, diagrams, and a fun read, yet still learn a great deal, however there's not a great deal of code. (Understandably, keeping the target audience in mind). In the Deitel Developer Series you won't get many diagrams at all, but you will get a ton of very well written, clean code which is always thoroughly commented and then further explained in paragraphs walking you through the code. All or nearly all of the topics you have listed are included in that Deitel book. Both titles have been a delight to learn with.
Nothing is withheld from us what we have conceived to do. -Russel Kirsch-