使用类而做的工作步骤
- 加载, 由类加载器执行
- 链接, 为静态域分配存储空间等
- 初始化,初始化、执行静态初始化器和静态初始化块
Class.forName
它获取对制定类的Class对象的引用,会进行初始化。
public class P {
static {
System.out.println("Hi");
}
}
测试代码:
public class TestP {
public static void main(String[] args) throws Exception {
Class c = Class.forName("part14.Item14x2.P");
System.out.println(c);
c = Class.forName("part14.Item14x2.P");
}
}
控制台输出
Hi
class part14.Item14x2.P
static
静态块被执行。
.class
它用来创建对class
对象的引用,但是不会自动初始化该Class
对象。
测试代码
public class TestP {
public static void main(String[] args) throws Exception {
Class c = P.class;
System.out.println(c);
}
}
控制台输出
class part14.Item14x2.P
可以看到并没执行static
静态块。