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教程:

2022年最新JAVA教程

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值