可能是重复问题:
Java静态类初始化
为什么字符串变量在初始化块中被更新而整数变量没有(尽管块写在第一位)?
class NewClass
{
static
{
System.out.println(NewClass.string+" "+NewClass.integer);
}
final static String string="static";
final static Integer integer=1;
public static void main(String [] args)//throws Exception
{
}
}
输出结果为:
static null
另外注意到,只有在我插入final修饰符时,字符串变量的初始化才会在块之前发生。为什么是这样呢?为什么整数不也是一样呢?我已经将其声明为final static了。