class文件简介

简介: 可以直接把.class文件拖到eclipse中,看到内容。 图0-1 class文件内容示例 1.文件格式 (1) magic 在class文件开头的四个字节, 存放着class文件的魔数,为固定值0XCAFEBABE。若无,则 不能被JVM识别。 (2)minor_version 和 major_version 紧接着魔数的四个字节是class文件的此版本号和主版本号。

可以直接把.class文件拖到eclipse中,看到内容。


图0-1 class文件内容示例

1.文件格式

(1) magic
在class文件开头的四个字节, 存放着class文件的魔数,为固定值0XCAFEBABE。若无,则 不能被JVM识别。
(2)minor_version 和 major_version
紧接着魔数的四个字节是class文件的此版本号和主版本号。

2.类型表示

2.1 引用类型

L类型的全限定名;  
如Long类型对应的就是Ljava/lang/Long;

需要注意到,在表示全限定名时将点号替换成了“/”。

2.2 基本类型

每种基本数据类型都有一个大写字母做对应, void也有一个大写字符做对应。 下表是void和基本数据类型在描述符中的对应。

基本数据类型和void类型 类型的对应字符
byte B
char C
double D
float F
int I
long J
short S
boolean Z
void V

2.3 数组类型

若干个“[”  +  数组中元素类型的对应字符串  。如Object[][][]类型的对应字符串是: [[[Ljava/lang/Object; 
如double[][] 类型的对应字符串是: [[D

3.方法签名

(参数1类型 参数2类型 参数3类型 ...)返回值类型  
一些对照情况见下表。
方法描述符 方法声明
()I int getSize()
()Ljava/lang/String; String toString()
([Ljava/lang/String;)V void main(String[] args)
()V void wait()
(JI)V void wait(long timeout, int nanos)
(ZILjava/lang/String;II)Z boolean regionMatches(boolean ignoreCase, int toOffset, String other, int ooffset, int len)
([BII)I int read(byte[] b, int off, int len )
()[[Ljava/lang/Object; Object[][] getObjectArray()

4.反编译

eclipse有插件可以支持。
目录
相关文章
|
机器学习/深度学习 人工智能 算法
机器学习是什么?
机器学习是什么?
679 4
|
计算机视觉
OpenCV3 和 Qt5 计算机视觉:6~10
OpenCV3 和 Qt5 计算机视觉:6~10
247 0
|
数据库连接 数据库
kettle开发篇-数据库查询
kettle开发篇-数据库查询
445 0
|
程序员 C++
【实战指南】不到100行代码,封装一个通用毫秒级计时器(基于RAII思想)
本文介绍了一款基于RAII思想封装的通用毫秒级计时器,代码不到100行,简洁高效。通过C++的RAII(资源获取即初始化)原则,计时器在对象构造时自动记录起始时间,析构或调用接口时返回时间差,支持秒级和毫秒级精度。该设计减少了重复代码,提升了复用性和可维护性,适用于性能分析、超时检测等场景。使用时仅需定义对象并调用获取时间间隔的接口,极大简化了开发流程。
124 0
|
9月前
|
UED
产品经理-用户体验五要素 - AxureMost
《用户体验五要素》介绍了构建成功用户体验设计的五个层面:战略层、范围层、结构层、框架层和表现层。战略层明确产品目标与用户需求;范围层定义功能和内容需求;结构层规划交互与信息架构;框架层设计界面、导航和信息布局;表现层则通过视觉设计创造感知体验。每一层都依赖于其下一层,形成自下而上的连锁效应,确保各要素相互作用,共同实现用户体验目标。
|
网络协议 程序员 数据安全/隐私保护
LabVIEW在两台计算机之间传输数据
LabVIEW在两台计算机之间传输数据
303 0
|
存储 Java Apache
Python Number类型详解!
本文详细介绍了 Python 中的数字类型,包括整数(int)、浮点数(float)和复数(complex),并通过示例展示了各种算术操作及其类型转换方法。Python 的 `int` 类型支持任意大小的整数,`float` 类型用于表示实数,而 `complex` 类型用于表示复数。此外,文章还对比了 Python 和 Java 在数字类型处理上的区别,如整数类型、浮点数类型、复数类型及高精度类型,并介绍了各自类型转换的方法。尽管两种语言在语法上有所差异,但其底层逻辑是相通的。通过本文,读者可以更好地理解 Python 的数字类型及其应用场景。
457 2
|
SQL 分布式计算 大数据
利用SparkSQL Logical Plan Parse 打造大数据平台SQL诊断利器
利用SparkSQL Logical Plan Parse 打造大数据平台SQL诊断利器
279 0
|
网络性能优化
4-1 51单片机GPIO介绍
4-1 51单片机GPIO介绍
412 0
|
物联网
mqtt实现消息通知
mqtt实现消息通知
444 0