java_类加载器的简述

1.类加载器的作用

Java类加载器是Java运行时环境的一部分,负责动态加载Java类到 Java虚拟机的内存空间中。

类通常是按需加载,即第一次使用该类时才加载。

一个应用程序总是由多个类组成,Java程序启动时并不是一次把所有的类全部加载后再运行。

它总是先把保证程序运行的基础类一次性加载到jvm中,由于有了类加载器,所以Java运行时系统不需要知道文件与文件系统,其它类等到jvm用到的时候再加载,这样的好处是节省了内存。

因为java最早就是为嵌入式系统而设计的,内存宝贵,这是一种可以理解的机制,而用到时再加载这也是java动态性的一种体现。

2.类加载器的使用

那么类加载器需要这么使用呢:

class Base{
static int a = 1;
static {
System.out.println("init Base!");
}
}
class Sub extends Base {
static int b = 2;
static {
System.out.println("init Sub!");
}
}
public class zuoye2 {
static {
System.out.println("init zuoye2!");
}
/**
* @param args
*/
public static void main(String[] args) {
//调用base类的变量a
System.out.println("a:"+Base.a);
//调用sub类中的b
System.out.println("b:"+Sub.b);
System.out.println("a:"+Base.a);
System.out.println("b:"+Sub.b);
int[] array1 = new int[3];
System.out.println(array1.getClass());
System.out.println(int[].class);
int[] array2 = new int[3];
System.out.println(array2.getClass());
//比较两个类的区别
System.out.println(array2.getClass()==array1.getClass());
int[][] array3 = new int[2][3];
//比较两个类的区别
System.out.println(array3.getClass()==int[][].class);

}

}
运行结果:





当程序运行时会先加载静态块里的代码,如何再执行主程序。当前没用到的类并不会去加载静态块里面的代码。



原文地址:https://www.cnblogs.com/dxgld/p/13537312.html