正如标题所说,两者到底有什么区别
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 - 静态初始化 block 和常规静态初始化之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15485637/