类的加载机制笔记

类的加载机制

  • 1.启动JVM
  • 2.将需要运行的class文件加载到虚拟机内存中
  • 3.找到主类,开始执行主函数

class文件是如何被加载到JVM内存中的?
通过类加载器将class文件加载到JVM内存中
类加载器:ClassLoader
AppClassLoader 应用类加载器,负责加载核心类,加载自己写的类
ExtClassLoader 扩展类加载器,负责加载扩展类库
bootstrap JVM内置的加载器
Bootstrap类加载器是JVM的一部分,是由C++编写的,
随着启动虚拟机就会创建一个bootstrap类加载器对象

加载步骤:

1.先委托父类加载类,如果父类已经加载,就不需要再次加载,如果父类没有加载,再由本加载器加载
2.解析类路径,将类路径转换成文件路径
3.通过文件输入流来读取class文件,得到字节数组
4.将字节数组转换成类对象,对象的类型是Class类型

每一个class文件读取到JVM内中之后,都转换成了一个Class对象

获得Class对象的几种方式:
//1.通过类名.class
Class c1 = Student.class;

//2.通过对象的getClass()方法
Class c2 = stu.getClass();

//3.通过类加载器获得class对象
ClassLoader classLoader = ClassLoader.getSystemClassLoader();
Class c3 = classLoader.loadClass(“com.newer.test.Student”);

//4.通过 Class.forName()获得Class对象;
Class c4 = Class.forName(“com.newer.test.Student”);

任何一个类都只能被加载一次

自定义类加载器

加载到JVM内存之后,在内存中的存在形式?

加载到内存之后,以Class对象的形式存在

数组类型的Class对象
int[].class
数组对象.getClass();

基本类型的Class对象
int.class

基本类型对应的包装类的Class对象
Integer.class
对象.getClass();
Integer t = 100;
t.getClass();
Class.forName(“java.lang.Integer”);
loadClass(“java.lang.Integer”);
拿到包装类对应的基本类型的Class对象
Integer.TYPE;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值