java的类加载机制

java平台主要包括两个模块:JVM和java API


JVM是一个虚构出来的计算机,用来把java编译生成的中间代码转换为机器可以识别的编码并运行。它有自己完善的硬件结构,如处理器,堆栈,寄存器等,还具有相应的指令系统,它屏蔽了与具体操作系统平台相关的信息,使得java程序只需要生成JVM上运行的目标代码,就可以在多种平台上不加修改的顺序执行,每当一个java程序运行时。都会有一个对应的JVM实例,只有当程序结束后,这个JVM才会退出。JVM实例通过调用main()方法来启动一个java程序,而这个main()方法必须是公有的,静态的且返回值为void的方法,该方法接受一个字符串数组的参数,只有同时满足这些条件才可以作为程序的入口方法。


java语言是一种具有动态性的解释型语言,类只有被加载到JVM中后才能运行,当运行指定程序时,JVM会将编译生成的.class文件按照需求和一定的规则加载到内存中,并组织成为一个完整的java应用程序,这个加载过程是由类加载器来完成的,具体来说,就是由ClassLoader和它的子类来完成的。类加载器本身也是一个类,其实质是把类文件从硬盘中读取到内存中。

类的加载方式分为隐式加载和显示加载两种,隐式加载指的是将车鞥徐在使用new等方式创建对象时,会隐式的调用类的加载器把相应的类加载到JVM中。显示加载则是通过直接调用class.forName()方法来吧所有的类加载到JVM中。


在java语言中,类加载是动态的,它并不会一次性的将所有的类全部加载后在运行,而是保证基础类完全加载到JVM中,至于其他类,则在需要时才进行加载。


在java语言中,可以把类分为三种:系统类,扩展类和自定义类。


BootStrap Lloader    ---负责加载系统类

ExtClassLoader    --负责加载扩展类

AppClassLoader --负责加载应用类


类加载分为三步:

1.装载  。根据查找路径找到相应的class文件,然后导入

2.连接。分为三步:

    a.检查:根据查找路径找到对应的class文件,导入

    b.准备:给类中静态变量分配存储空间

    c.初始化:对静态变量和静态代码块执行初始化工作。





你可能感兴趣的:(java基础)