如果你执行这个程序你将只获得i
值而不是SIB,我的问题是当类加载到内存SIB中时应该执行并且应该给出ooutput,但是在这里我只得到{{1值?然后在类测试中保留一个方法,然后从另一个类调用该方法,然后您将获得SIB的输出,i
方法(保持方法也作为静态最终)
i
答案 0 :(得分:7)
static final
变量是编译时常量,其值被复制到引用它的另一个类中。因此,您的类Test
将不会加载,也不会执行初始化程序。当变量仅为static
时,必须加载该类以读取当前值,并且将执行您的SIB块。仅当您使用Test
实例化 new Test()
时,才会执行IIB块。