Java – static initializer and instance initializer and constructor

There is already an answer to this question: > use of initializers vs constructors in java8

Solution

The main difference between them is the order in which they are executed To illustrate, I will explain with an example:

public class SomeTest {

    static int staticVariable;
    int instanceVariable;        

    // Static initialization block:
    static {
        System.out.println("Static initialization.");
        staticVariable = 5;
    }

    // Instance initialization block:
    {
        System.out.println("Instance initialization.");
        instanceVariable = 10;
    }

    // Constructor
    public Sometest() {
        System.out.println("Constructor executed.");
    }

    public static void main(String[] args) {
        new Sometest();
        new Sometest();
    }
}

The output result is:

Static initalization.
Instance initialization.
Constructor executed.
Instance initialization.
Constructor executed.

Short words:

Once the class is loaded by the JVM, the static initialization block runs. > The instance initialization block runs before the constructor before instantiating one object at a time. > The constructor (obviously) runs each time an object is instantiated

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>