java - 静态初始化 block 和常规静态初始化之间的区别

标签 java static initialization

正如标题所说,两者到底有什么区别

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/

相关文章:

java - 如何在不同网络的 NAT 后面的两个客户端之间建立 TCP 连接?

C++ 静态方法(在不同的类中)(如 Java 的)

c++ - 用函数初始化的静态常量的初始化顺序

ios - 初始化 UIView 时避免 (void)drawRect

c - 打印矩阵值

java - 在 Java 中将 URL 映射到请求处理程序的最简单方法

java - 如何传递 SSL keystore 密码?

java - Java支持可变变量吗?

java - 内部类内部的内部静态类无法转换

c++ - 没有针对未初始化的 std::atomic<double> 的编译器警告