Java中的虚拟机是如何加载类的?

JAVA是一门功能十分强大的语言,而Java 语言的类型可以分为两大类:

  • 基本类型(primitive types)
  • 引用类型(reference types)

Java 将引用类型细分为四种:类、接口、数组类和泛型参数。由于泛型参数会在编译过程中被擦除,因此 Java 虚拟机实际上只有前三种。在类、接口和数组类中,数组类是由 Java 虚拟机直接生成的,其他两种则有对应的字节流。

无论是直接生成的数组类,还是加载的类,Java 虚拟机都需要对其进行链接和初始化。

 

加载


加载是指查找字节流,并且据此创建类的过程。数组类没有对应的字节流,而是由 Java 虚拟机直接生成的。其他的类是Java 虚拟机则需要借助类加载器来完成查找字节流的过程。

以盖房子为例,要盖个房子得先找个建筑师,跟他说想要设计一个房型,比如说“一房、一厅、四卫”。房型相当于类,建筑师就相当于类加载器。

村里有许多建筑师,他们等级森严,但有着共同的祖师爷,叫启动类加载器(bootstrap class loader)。启动类加载器是由 C++ 实现的,没有对应的 Java 对象,因此在 Java 中只能用 null 来指代,祖师爷不喜欢小角色来打扰他,所以谁也没有祖师爷的联系方式。

除了启动类加载器之外,其他的类加载器都是 java.lang.ClassLoader 的子类,有对应的 Java 对象。这些类加载器需要先由另一个类加载器,比如说启动类加载器,加载至 Java 虚拟机中,方能执行类加载。

更多JAVA教程:

https://www.bilibili.com/video/BV1qL411u7eE

 

最后Java基础入门的小伙伴,技术整合提升自己不要错过

需要课件、源码、安装包等资料,可以评论告诉我哦~

posted @ 2022-03-10 17:56  向盐光  阅读(50)  评论(0)    收藏  举报