class Test {
public static void main(String arg[]) {
System.out.println("**MAIN METHOD");
System.out.println(Mno.VAL); // SOP(9090);
System.out.println(Mno.VAL + 100); // SOP(9190);
}
}
class Mno {
final static int VAL = 9090;
static {
System.out.println("**STATIC BLOCK OF Mno\t: " + VAL);
}
}
我知道static
在加载类时执行了一个块。但是在这种情况下,类内的实例变量Mno
为final
,因为该static
块未执行。
为什么呢?如果我删除final
,它会正常工作吗?
首先分配哪个内存,static final
变量还是static
块?
如果由于final
访问修饰符而无法加载该类,那么该变量如何获取内存?