【发布时间】:2013-09-30 14:08:33
【问题描述】:
我创建了一个类,其中包含:
-
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);
}
}
-
案例一:
20 -
案例 2:
one 20
那么这两个层面发生了什么?
【问题讨论】:
-
发布您的代码!
-
不确定您的问题是什么。能否提供示例代码。
-
描述代码几乎总是不如仅仅显示它 - 理想情况下是一个简短但完整的程序来演示问题。
-
你也可以发布输出吗?
标签: java