A constructor can invoke another overloaded constructor in its class using the self-referential method call this() with appropriate arguments to select the desired constructor. If a constructor calls another constructor, it must do so as its first statement
Link
What a wild and interesting behavior. I wonder why it was believed to be necessary.
The static members of a class are initialized when the class is first loaded into the virtual machine.
Link
Garbage collection uses a variety of algorithms; the Java virtual machine architecture doesn’t require a particular scheme.
Link
Java needs a garbage collector, but like an application calling an API, it only needs the services of a GC, not a specific implementation of one.
Collections work only with object types, so primitives must be wrapped when stored in them.
Link
All primitive types in Java need wrappers to be put into collections. Only reason I haven’t noticed any other than ints is that ints and Strings are the only ones I tend to try.