javap有以下命令:

可以使用其中的 javap -c 来对 .clss 文件进行反汇编,查看底层代码
例1:

使用javap -c 进行反汇编可以看到如下底层代码:

指令:
ldc:读/加载常量 a
astore_1:分配一块内存,将 a 存进去
例2:


例3:


例4:


指令:
new:JVM创建一个对象,并将其压入栈中
dup:对栈顶的内容做一个备份
invokespecial:调用实例初始化方法<init>:()V,会弹出一个之前入栈的对象地址,会消耗操作数栈顶
由例3和例4可以看出来,虽然结果一样,但是底层并不相同,所以比较字符串时不能使用==,需要使用equals
例5:


例6:


由例5和例6可以看出来,x++ 和 ++x的底层代码也是不一样的
本文通过示例详细介绍了javap工具如何对.class文件进行反汇编,揭示了Java字节码的底层运作原理。举例说明了字符串比较、变量自增等操作在底层的实现差异,强调了在编程中正确使用equals方法和理解操作顺序的重要性。
1035

被折叠的 条评论
为什么被折叠?



