java类加载

类加载时要调用初始化代码,何为初始化代码?其实就是类文件中写的static代码块,如下:

 1 public class Car {
 2     // 静态代码块,就是初始化代码
 3     static {
 4         System.out.println("买一辆车");
 5     }
 6 
 7     public void drive() {
 8         System.out.println("去感受驾驶的乐趣...");
 9     }
10 }
1 public class MyClassLoader {
2 
3     public static void main(String [] args) {
4         System.out.println("准备。。。");
5         Car car = new Car();
6         car.drive();
7     }
8 }

执行结果如下:

准备。。。
买一辆车
去感受驾驶的乐趣...

-------------------------

如果通过debug的方式执行,上面MyClassLoader方法中,第4行开始执行,到第五行执行结束

通过jvisualvm查看类加载数量,可以发现增加了1个

执行到第四行的状态,注意观察“已装入的总数”是399

执行到第五行的状态,注意观察“已装入的总数”是400

 

好,下面用另一种方式加载类

Class.forName("o3.Car");

得到的结果与第一种方式一样,static中的方法也会被执行

那么,如何在加载类时,不执行static方法呢?

Class.forName("o3.Car", false, ClassLoader.getSystemClassLoader());

这样就可以了,注意第二个参数是false,加载类时不初始化类

 

posted on 2016-11-21 20:03  iTown  阅读(307)  评论(0编辑  收藏  举报

导航