查看反编译字节码的方式:javap 、 asm 、jclasslib

本文介绍了三种查看Java字节码的方法:javap(JVM自带命令行工具),jclasslib(提供直观GUI的字节码查看器)和asm(用于查看和修改字节码的库)。通过学习和使用这些工具,开发者可以深入了解字节码如何工作,解决诸如finally块执行、语法糖实现等问题。javap适合初学者,jclasslib适合深入研究,而asm则提供了代码与字节码对应的功能。
摘要由CSDN通过智能技术生成

写在前面:

关于字节码,就是***.java文件经过javac编译成***.class文件中的内容,但是都是二进制,经过反编译后才能看到其中内容。

关于查阅字节码的作用,就是知道.class文件经过classloader加载进内存后发生了什么。

可以用来解释一些平时不会思考到的问题,

比如,finally块中的内容为什么一定会被执行?  try语句包裹内容为什么尽量要少?

          为什么只要其他类用不到的方法尽量都要是private?各种语法糖是怎么实现的?静态代码块和静态变量初始化的先后顺序?

          for循环、while循环的区别在哪等等。。。。

 

javap  、 asm 、jclasslib这仨,感觉学习要从javap学起,使用的话用jclasslib,asm这个不很熟,但是对着原始代码看很方便。

正文

1. javap

jvm自带的命令,javac是编译,javap是反编译,如图javac 接javap可在命令行看到反编译的字节码内容,注意javac -g  没有-g的话反编译回来各个方法内没有localVariablesTable。

特点:使用原生命令,多个追加参数,初学容易但是查看麻烦,多个版本比对的话还要写个小脚本输出保存到本地。

D:\JavaProject\concurrent\src\main\java\com\htyl\t1>javac -g Demo01.java

D:\JavaProject\concurrent\src\main\java\com\htyl\t1>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值