窥一斑而知全豹,几分钟带你读懂Java字节码,再也不怕了【奔跑吧!JAVA】
【摘要】 引言:都知道java的源文件最后会被编译成class文件,class文件的内容是字节码。为什么java要编译成字节码呐?我觉得最主要的原因是Java想要做到的跨平台。只要有虚拟机,在任何平台的表现都一样的,屏蔽了系统层的不同,并且不像C,C++ 等语言编译成和平台相关的机器码。同时也给其他的语言提供了在虚拟机运行的机会,只要是符合规范的class文件,不管是什么语言编译出来的都可以。比如sc...

1、如何看字节码
2、一个简单的例子
// class version 52.0 (52)
// access flags 0x21
public class org/pdool/d20200923/GamWatcher {
// compiled from: GamWatcher.java
// access flags 0x0
I age
// access flags 0x1
public <init>()V
L0
LINENUMBER 6 L0
ALOAD 0
INVOKESPECIAL java/lang/Object.<init> ()V
RETURN
L1
LOCALVARIABLE this Lorg/pdool/d20200923/GamWatcher; L0 L1 0
MAXSTACK = 1
MAXLOCALS = 1
// access flags 0x1
public getAge()I
L0
LINENUMBER 9 L0
ALOAD 0
GETFIELD org/pdool/d20200923/GamWatcher.age : I
IRETURN
L1
LOCALVARIABLE this Lorg/pdool/d20200923/GamWatcher; L0 L1 0
MAXSTACK = 1
MAXLOCALS = 1
// access flags 0x1
public setAge(I)V
L0
LINENUMBER 12 L0
ALOAD 0
ILOAD 1
PUTFIELD org/pdool/d20200923/GamWatcher.age : I
L1
LINENUMBER 13 L1
RETURN
L2
LOCALVARIABLE this Lorg/pdool/d20200923/GamWatcher; L0 L2 0
LOCALVARIABLE age I L0 L2 1
MAXSTACK = 2
MAXLOCALS = 2
}
3、字节码结构

4、总结:
【奔跑吧!JAVA】有奖征文火热进行中:https://bbs.huaweicloud.com/blogs/265241
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)