Java基础知识复习:类加载机制、反射和类初始化
需积分: 10 141 浏览量
更新于2024-09-01
收藏 7KB MD 举报
Java面试题复习第一弹
在 Java 中,反射机制是指在程序运行时动态地获取和操作类的信息的能力。获取到字节码有三种方法:使用 `Class.forName(className)` 方法,使用 `类名.class` 方法,使用 `this.getClass()` 方法。这些方法可以将字节码中的方法、变量、构造函数等映射成相应的 `Method`、`Field`、`Constructor` 等类,这些类提供了丰富的方法可以被我们使用。
类的初始化有多种触发方式,包括创建类的实例、new 一个对象、访问某个类或接口的静态变量、或者对该静态变量赋值、调用类的静态方法、反射、初始化一个类的子类(会首先初始化子类的父类)、JVM 启动时标明的启动类,即文件名和类名相同的那个类。
类的初始化步骤包括:如果这个类还没有被加载和链接,那就先进行加载和链接;如果这个类存在直接父类,并且这个类还没有被初始化(注意:在一个类加载器中,类只能初始化一次),那就初始化直接的父类(不适用于接口);如果类中存在初始化语句(如 static 变量和 static 代码块),那就依次执行这些初始化语句。
Java 的双亲委托机制是指类加载器之间的关系,子类加载器会将加载请求委托给父类加载器,如果父类加载器也不能加载,则继续委托给它的父类加载器,直到达到根加载器,最后如果都不能加载,则抛出 `ClassNotFoundException`。
JVM 加载 class 文件是由类加载器(ClassLoader)和它的子类来实现的,Java 中的类加载器是一个重要的运行时系统组件,它负责在运行时查找和装入类文件中的类。类的加载是指把类的 `.class` 文件中的数据读入到内存中,通常是创建一个字节数组读入 `.class` 文件,然后产生与所加载类对应的 `Class` 对象。加载完成后,`Class` 对象还不完整,所以此时的类还不可用。当类被加载后就进入连接阶段,这一阶段包括验证、准备(为静态变量分配内存并设置默认的初始值)和解析(将符号引用替换为直接引用)三个步骤。最后 JVM 对类进行初始化,包括:如果类中存在直接的父类并且这个类还没有被初始化,那么就先初始化父类;如果类中存在初始化语句,就依次执行这些初始化语句。
类加载器包括:根加载器(BootStrap)、扩展加载器(Extension)、系统加载器(System)和用户自定义类加载器(java.lang.ClassLoader 的子类)。BootStrap 负责加载 JVM 基础核心类库(rt.jar);Extension 从 java.ext.dirs 系统属性所指定的目录中加载类库,它的父加载器是 BootStrap。
本文涵盖了 Java 中的反射机制、类的初始化、双亲委托机制、类加载器、JVM 加载 class 文件等知识点,为 Java 开发者提供了有价值的参考资料。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2022-04-02 上传
2022-04-02 上传
2013-04-29 上传
2022-06-09 上传
2008-03-16 上传
点击了解资源详情
老阿張
- 粉丝: 17
- 资源: 21
最新资源
- Angular实现MarcHayek简历展示应用教程
- Crossbow Spot最新更新 - 获取Chrome扩展新闻
- 量子管道网络优化与Python实现
- Debian系统中APT缓存维护工具的使用方法与实践
- Python模块AccessControl的Windows64位安装文件介绍
- 掌握最新*** Fisher资讯,使用Google Chrome扩展
- Ember应用程序开发流程与环境配置指南
- EZPCOpenSDK_v5.1.2_build***版本更新详情
- Postcode-Finder:利用JavaScript和Google Geocode API实现
- AWS商业交易监控器:航线行为分析与营销策略制定
- AccessControl-4.0b6压缩包详细使用教程
- Python编程实践与技巧汇总
- 使用Sikuli和Python打造颜色求解器项目
- .Net基础视频教程:掌握GDI绘图技术
- 深入理解数据结构与JavaScript实践项目
- 双子座在线裁判系统:提高编程竞赛效率