java中加载类,也就是通过加载器把字节码加载到内存中,他的的时机有:
1, new 一个对象时
2, 调用Class.forName("类名")方法
3,,访问非final的static成员变量的时候,如果是static final的成员变量,不会加载类,因为它在常量区了,但是public static final int j = new Random().nextInt(10);除外,因为在编译的时候,这个值是不确定的
4, 访问static的成员函数的时候
5, 调用类.class时
6, 利用java.lang.reflect.*中的方法,对类进行反射调用时,其实第二点和第五点可以归结到这里来,这两种方式都是进行反射要用到的方法。
如果类已经加载进来,就会缓存起来,下次使用的时候,就不会再加载了,而是直接使用