初始化静态最终变量

Che*_*eng 3 java

我想知道,有什么不同,在各种方法初始化静态最终变量?

private static final int i = 100;
Run Code Online (Sandbox Code Playgroud)

要么

private static final int i;
static {
    i = 100;
}
Run Code Online (Sandbox Code Playgroud)

这两者有什么不同吗?

sep*_*p2k 10

如果你只是设置变量,那么两种形式都是等价的(你应该使用前者,因为它更具可读性和简洁性).

static {}形式存在,你还需要执行比变量赋值等语句的情况.(有点做作)的例子:

private static final int i;
static {
    establishDatabaseConnection();
    i = readIntFromDatabase;
    closeDatabaseConnection();
}
Run Code Online (Sandbox Code Playgroud)