java – 静态初始化程序与实例初始化程序与构造函数

这个问题在这里已经有一个答案:> Use of Initializers vs Constructors in Java8
我正在读Java考试.在我学习的时候,我遇到了java中不熟悉的语法.如大括号({})取消了没有名称的类体,有些具有静态关键字.我发现他们被称为“初始化器”.任何人都可以帮我指出他们之间的关键差异,以及它们与构造函数的区别.谢谢

解决方法

它们之间的主要区别是它们执行的顺序.为了说明,我将以一个例子来解释:
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();
    }
}

输出结果为:

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

简短的说话:

一旦类被JVM加载,静态初始化块就会运行.>实例初始化块在每次实例化一个对象之前在构造函数之前运行.>构造函数(显然)每次实例化一个对象时运行.

相关文章

应用场景 C端用户提交工单、工单创建完成之后、会发布一条工...
线程类,设置有一个公共资源 package cn.org.chris.concurre...
Java中的数字(带有0前缀和字符串)
在Java 9中使用JLink的目的是什么?
Java Stream API Filter(过滤器)
在Java中找到正数和负数数组元素的数量