Thanks Abimaran,
The source of my confusion is this book, which isn't very good as I have found many mistakes, "SCJP Sun Certified Programmer for
Java Platform, SE6 Study Guide" by Richard Raposa. In this book on page 101, it states the instantiation process is:
1) The JVM determines the amount of memory... memory is zeroed... (etc etc).
2)
Explicit initialization of instance variables is performed.
3)
The appropriate constructor is invoked, depending on the arguments specified in the new statement.
4) Before the constructor executes, one of the immediate parent class constructors is executed.
5)
Any instance initializers are executed. If a class has multiple initializers, they are executed ... (etc etc).
6) The body of the constructor executes.
7) The new operator returns a reference to the new object.
So, if you notice number 2, 3, and 5, you can see why I was confused. According to the above rules, instance variables are initialized
before the constructor is invoked, which appears to be incorrect.