java中.class文件的一些知识

Java虚拟机知识点:Class文件编程 在进行Class文件编程时,建议参考相关的文档和书籍,以充分理解Java虚拟机的规范和相关工具的使用方法。Class文件是Java虚拟机的一种重要数据结构,它包含了Java程序的字节码指令和相关的元数据信息。在本文中,我们将探讨如何进行Class文件的编程,包括如何创建、读取和修改Class文件。上述代码通过读取Class文件的字节码数据,使用自定义的类加载器加载Class文件,并获取了类的名称和父类的名称。然后,它调用了Class文件中名为。然后,它将新的类写入了Class文件中,覆盖了原有的内容。 阅读详情

目录

引言

class类文件的结构

class文件的生存周期

结语


引言

class文件即是字节码(字节码是一种能够在所有平台统一使用的程序存储格式)文件,其本质是供JVM进行编译包含特定格式二进制流的磁盘文件,这是实现java跨平台编译的基础之一(另一个基础就是JVM)。

在程序编译的流程上,其来源具有多源性(可能是多种语言(如java程序、JRuby程序、Groovy程序、其他等),实现了JVM的跨语言编译),class文件是提供给JVM进行编译的文件;

在文件内容上,其保存的是Java虚拟机的指令集和符号表,以及若干辅助信息;

注意:在java中,任何一个class文件都对应着唯一一个类或者接口的定义信息,以磁盘文件的形式存在;但是,类或者接口不一定都需要定义在文件中(比如,可能通过类加载器直接生成。),不一定以磁盘形式存在。如下图所示:

 

类/接口的定义信息去向

class类文件的结构

这一节主要参考书籍《深入理解java虚拟机》第六章内容,这里不再赘述。

概述:Class文件是一组以8位字节为基础单位的二进制流(二进制流,本质!!!),各个数据项目严格按照顺序紧凑地排列在Class文件之中,中间没有添加任何分隔符。

文章参考:带你逐个字节地搞明白.class文件 

class文件的生存周期

这一节参考文章:java中的.class文件的生存周期是怎样的(即类加载到类释放的过程)

结语

  • 字节码文件本质是保存具有特定格式的二进制流,其以磁盘文件形式存在。
  • 这些二进制流是提供给JVM对程序进行编译的信息,其来源不仅仅局限于java程序,也可能是其他程序。
  • 与此同时,这些二进制流不一定以磁盘文件形式存在,只要它能够被JVM拿到相应内存进行编译,他就能完成其功能。

 

 

 

 

 

 

STM32HAL库 基于外部Flash+FatFs模拟U盘方式进行固件拷贝升级(详解) STM32HAL库 基于外部Flash+FatFs模拟U盘方式进行固件拷贝升级 阅读详情

相关推荐

QFN封装芯片手工焊接实战:从焊盘处理到拖焊技巧

本文详细介绍了QFN封装芯片手工焊接的全过程,从焊盘处理到拖焊技巧,再到常见问题的现场修复方法。通过实战经验分享,帮助工程师和DIY爱好者掌握0.5mm小间距QFN芯片的焊接技术,提升焊接成功率和质量。重点讲解了垂直与平行拖焊手法的对比应用,以及焊后清理与质量检验的关键步骤。

weixin_42652674的博客 532

Java中.class

一、什么是类对象 一个类在被加载的时候虚拟机就会自动的生成一个这个类的一个Class类型的“类对象”,每个类都对应着一个这样的类对象,通过这个Class类型的类对象,我们就能够使用“内省与反射”机制,访问一个类的信息,比如:对应类中的方法有哪些,成员域有哪些等等。 二、获取类对象的方法 1.类名.class 2.对象调用getClass()方法获取该对象的Class实例 Student s = new Student(); Class c = s.getClass(); 3.使用Class的静

qq_59676409的博客 6253

PointNetLK实战:5步搞定点云配准(附ModelNet40数据集训练技巧)

本文提供了一份详细的PointNetLK实战指南,帮助读者在5步内掌握点云配准技术。文章以ModelNet40数据集为例,深入讲解了环境搭建、数据预处理、模型训练与调试等核心步骤,并分享了关键的训练技巧和调参策略,旨在让开发者快速实现并应用这一高效的深度学习配准方法。

wind6的博客 462

java class类详解

这种方式在编译时就会受到检查(因此不需要置于try语句块中),不仅可以应用于普通的类,也可以应用于接口、数组及基本数据类型。时会判断类是否已经加载,没有加载则会调用类加载器来加载类,已经加载过了,不会重复加载。在这个类的字节码被加载时,它们会接受验证,以确保其没有被破坏,并且不包含不良。当程序创建第一个对类的静态成员的引用时,就会加载这个类。如果尚未加载,默认的类加载器就会根据类的全限定名查找。创建类对象的时候也会被当作对类的静态成员的引用。代码块只会在第一次加载类的时候被调用,由输出结果得知,

jacklin_01的博客 6088

KEGG数据库与KAAS工具:基因功能注释的实用指南

本文提供了使用KEGG数据库与KAAS工具进行基因功能注释的完整实用指南。详细阐述了如何从准备基因或蛋白序列开始,通过KAAS服务器获取KEGG Orthology(KO)编号,并解读注释结果。文章进一步介绍了如何利用KOBAS工具进行通路富集分析,将定性观察转化为定量洞察,并分享了提高注释准确率、处理大数据集及使用API等避坑技巧与高阶方法,为基因组学、转录组学研究者奠定坚实的数据分析基础。

weixin_29292535的博客 390

Vue3 - 超详细最新 wangEditor V5 富文本编辑器安装引入及使用教程,提供工具栏配置、基础富文本功能、API使用示例教程等(新手小白快速引入并植入到项目中)

vue3,wangEditorv5富文本编辑器,wangEditorv5官方文档,vue3最新安装wangEditorv5富文本详细使用教程,vue3使用wangEditorv5编辑器示例代码,vue3网站网页安装植入富文本编辑器教程,vue3wangEditor使用api,vue3安装富文本控制台出现报错如何解决,vue3wangEditor-v5工具栏配置,vue3中使用富文本编译器wangEditor5的方法,wangeditor5在vue3中的全使用过程,vue3超详细最新wangedi

🏆 前端领域优质创作者 4253

Class的生命周期

Class的生命周期就是指一个class文件(字节码)从加载到卸载的全过程。 当一个类被装载、连接、初始化后,它的生命周期就开始了,当代表该类的Class对象不再被引用、即已经不可触及的时候,Class对象的生命周期结束。那么该类的方法区内的数据也会被卸载,从而结束该类的生命周期。 一个类的生命周期取决于它Class对象的生命周期,经历加载、连接、初始化、使用、和卸载五个阶段。

无止于天涯 - Always on the Road 2214

LVGL iPhone Duo 开合过渡

环境:LVGL 9.x(需要软件模糊),窗口建议 1280×800。界面文案英文(默认 Montserrat 无 CJK)。

摸鱼专家 149

深入解析 Java 中的 类名.class:使用与原理全攻略

类名.class类名.class是 Java 中获取Class对象的一种高效方式,它为反射机制、注解处理、动态代理等提供了基础支持。在实际开发中,合理使用类名.class可以极大地提高代码的灵活性和可扩展性。希望这篇文章对你有所帮助!如果你有任何问题或想法,欢迎在评论区留言讨论!🚀。

weixin_39033358的博客 1789

YOLOv11改进 | 融合改进篇 | 利用尺度统一检测头DynamicHead融合P2增加小目标检测层(让小目标无所遁形)

本文给大家带来的最新改进机制是针对性的改进,针对于小目标检测增加P2层针对于大目标检测增加P6层利用DynamicHead(原版本一比一复现,全网独一份,不同于网上魔改版本)进行检测,其中我们增加P2层其拥有更高的分辨率,这使得模型能够更好地捕捉到小尺寸目标的细节。我们增加P6层是一个较低分辨率但具有更大感受野的特征层。对于大尺寸目标,这意味着模型可以更有效地捕捉到整体的结构信息。在这些的基础上我们配合DynamicHead可以使模型根据不同尺寸的目标动态调整其检测策略,进一步提升模型的精度。

Snu77的博客 3948

得物(毒)App潮鞋价格波动监控系统实战:从爬虫开发到数据可视化完整指南

本文将带领您从零开始构建一套完整的得物潮鞋价格监控系统,涵盖爬虫开发、数据存储、价格波动分析和可视化展示等全流程技术。我们将使用最新的Python技术栈,包括异步爬虫框架、智能代理池、反爬虫绕过技巧,以及基于机器学习的时间序列预测模型。无论您是想要追踪特定鞋款价格的潮流爱好者,还是希望构建商业级监控系统的开发者,这篇文章都将为您提供切实可行的解决方案。

2201_76125261的博客 2505

java中Class对象详解和类名.class, class.forName(), getClass()区别

Class对象的生成方式如下: 1.类名.class 说明:JVM将使用类装载器, 将类装入内存(前提是:类还没有装入内存),不做类的初始化工作.返回Class的对象 2.Class.forName("类名字符串")(注:类名字符串是包名+类名) 说明:装入类,并做类的静态初始化,返回Class的对象 3.实例对象.getClass() 说明:对类进行静态初始化、非静态...

Seachal的博客 485

Claude Code 100个真实案例 - 用AI绘制CAD机械图纸(工程师看了直呼内行)

本案例展示如何使用 Claude Code 配合 Python 的 `ezdxf` 库,从零开始生成专业级 CAD 机械图纸。我们将绘制一个完整的法兰盘零件图,包含主视图、俯视图、标注尺寸、粗糙度标记和标题栏,最终生成标准 DXF 文件,可直接在 AutoCAD 或 FreeCAD 中打开编辑。

yueyeguzhuo的专栏 894

Java中高级核心知识全面解析——类文件结构(概述、Class文件结构总结)

蜂信物联FastBee平台https://gitee.com/beecue/fastbee阿里资料开源项目https://gitee.com/vip204888百度低代码前端框架https://gitee.com/baidu/amisOpenHarmony开源项目https://gitcode.com/openharmony仓颉编程语言开放项目https://gitcode.com/Cangjie//常量池//Class 的访问标记//当前类//父类//接口。

2401_86354053的博客 1265

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

java小知识:如何查看class文件的jdk版本

1、事先编译好一个class文件,如:TestVersion.class 2、使用UltraEdit或Editplus打开class文件,我这里使用的editplus,如图: 3、打开时Encoding选择Hex viewer,以16进制方式显示 4、打开文件的内容如下: 5、只看第一行数据,前面8个字节CA FE BA BE 是固定的,之后4个字节00 00 是次版本号,次版本号后面的4个...

危险、的博客 1764

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Java虚拟机知识点-class文件

Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑排列在Class文件中,中间没有添加任何分隔符,这使得整个Class文件中存储的内容几乎全部是程序运行的必要数据,没有空隙。当遇到需要占用8位字节以上的数据项时,会按照高位在前的方式分割成若干个8位字节进行存储。 ClassFile 结构说明 magic:魔数。唯一作用是确定这个文件是否为一个能被虚拟机所接收的cla...

Qqun954715313的博客 198

.class文件转换.java_Java虚拟机知识点-class文件

Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑排列在Class文件中,中间没有添加任何分隔符,这使得整个Class文件中存储的内容几乎全部是程序运行的必要数据,没有空隙。当遇到需要占用8位字节以上的数据项时,会按照高位在前的方式分割成若干个8位字节进行存储。ClassFile 结构说明magic:魔数。唯一作用是确定这个文件是否为一个能被虚拟机所接收的class文...

weixin_39757626的博客 90

Java高级架构师-Java虚拟机知识点【class文件】

Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑排列在Class文件中,中间没有添加任何分隔符,这使得整个Class文件中存储的内容几乎全部是程序运行的必要数据,没有空隙。当遇到需要占用8位字节以上的数据项时,会按照高位在前的方式分割成若干个8位字节进行存储。 ClassFile 结构说明 magic:魔数。唯一作用是确定这个文件是否为一个能被虚拟机所接...

JavaWildcat的博客 178

java基础知识(四)jvm class文件解读

Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在Class文件之中,中间没有添加任何分隔符,这使得整个Class文件中存储的内容几乎全部是程序运行的必要数据,没有空隙存在。当遇到需要占用8位字节以上空间的数据项时,则会按照高位在前的方式分割成若干个8位字节进行存储。以下面的程序分别读一下class文件public class TestClass { p

ncfl 501

java底层知识(1)--Class文件详解

本文转载自:http://blog.csdn.net/anhuidelinger/article/details/8947791 尊重原创前言如同讲汇编必先讲计算机组成原理,在开始字节码之前,我们先了解一下JVM的主要构成。 在JVM的内部,主要由如下几个部分构成: 1.数据区方法区:存放类定义信息、字节码、常量等数据,在Sun HotSpot JVM中,这块也称为Perm Gen。堆:创建的对

上善若水,厚德载物 1481

.class文件转换.java_Java中高级核心知识全面解析——类文件结构(概述、Class文件结构总结)...

一、概述在 Java 中,JVM 可以理解的代码就叫做 字节码 (即扩展名为 .class 的文件),它不面向任何特定的处理器,只面向虚拟机。Java 语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以 Java 程序运行时比较高效,而且,由于字节码并不针对一种特定的机器,因此,Java 程序无须重新编译便可在多种不同操作系统的计算机上...

weixin_35664081的博客 147

java虚拟机_Java虚拟机知识点-class文件

Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑排列在Class文件中,中间没有添加任何分隔符,这使得整个Class文件中存储的内容几乎全部是程序运行的必要数据,没有空隙。当遇到需要占用8位字节以上的数据项时,会按照高位在前的方式分割成若干个8位字节进行存储。ClassFile 结构说明magic:魔数。唯一作用是确定这个文件是否为一个能被虚拟机所接收的class文...

weixin_39929723的博客 156

Java虚拟机|JVM知识点汇总及简述->Class文件结构

Java虚拟机|JVM知识点汇总及简述->Class文件结构

光看不点赞的博客 264

JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用

JVM知识体系学习一:JVM基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用

冯安晨 1394
上一篇: Linux 绝对路径和相对路径
下一篇: 修改idea内存配置,优化速度
Longtermevolution
博客等级 码龄9年 113粉丝 249原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值