我制作了一个包含以下内容的类:
static final
多变的static
带有System.out.println()
语句的初始化块
如果我static final
从另一个类调用变量,则该static
块不会执行。
据我所知,static
初始化程序块在类加载到内存时执行。
在这种情况下,内存级别发生了什么?
类没有加载到内存中吗?如果没有,其他类从哪里获得final static
变量的地址?
情况 1: static
块不执行
class Test2 {
static final int a = 20;
static {
System.out.println("one");
}
}
案例2: static
块确实执行
class Test2 {
static final int a;
static {
a = 20;
System.out.println("one");
}
}
输出
class Test {
public static void main(String[] args) {
System.out.println(Test2.a);
}
}
情况1:
20
案例二:
one 20
那么在这两个层面上发生了什么?