java – 静态初始化程序块和常规静态初始化之间的区别

正如标题所说,两者之间究竟有什么区别

public static String myString = "Hello World!";

public static String myString;

static {
    myString = "Hello World";
}

除了结构之外还有什么重要的区别吗?

最佳答案
对于你的例子,没有区别.但正如你所看到的,

public static String myString = "Hello World!";

只能接受一个表达式来初始化变量.但是,在static initializer(JLS 8.7)中,可以执行任意数量的语句.例如.它可以这样做:

static
{
    myString = "Hello";
    myString += " ";
    myString += "World";
}

对于你的例子,显然没有必要这样做,但是变量的初始化可能不仅仅是一个表达式,也许是许多语句,因此Java创建了静态初始化器.

转载注明原文:java – 静态初始化程序块和常规静态初始化之间的区别 - 代码日志