NOTE

Java Class and Object Initialization Order

Static initialization, superclass initialization, instance field initializers, initializer blocks, and constructors in Java.

JavaCreated Updated 1 min readhistorical

This is a historical learning note and may contain outdated or incomplete understanding.

1. Class Initialization

Before a class is initialized, required superclass initialization occurs first. Within a class, static field initializers and static initializer blocks execute in source order as part of class initialization.

A class is initialized at most once per defining class loader under the JVM’s initialization synchronization rules.

2. Instance Construction

For an instance:

  1. memory starts with JVM default values;
  2. superclass constructor chain runs before the subclass constructor body;
  3. for each class in that chain, instance field initializers and instance initializer blocks execute in source order before that class’s constructor body.

Exact bytecode organization is compiler-generated, but the Java-visible order follows language rules.

3. Common Trap

Calling overridable methods from constructors can dispatch to subclass behavior before subclass initialization is complete. Avoid designs that expose partially initialized state.

Loading helpful count