关于虚指令和字节码的困惑

来源:6-2 平台无关性如何实现

莨菽菽

2020-04-23

http://img.mukewang.com/szimg/5ea1b4ff098132ea10220406.jpg

老师的原话是:红框内的是虚指令,也就是所说的字节码

问题:

    1.意思是反编译出来的内容,包括了虚指令和非虚指令(部分源代码本身)么?

    2.idea的反编译是把虚指令都换成了源代码了么?

    3.字节码就是虚指令这么一小部分,就是说字节码!=class文件,是class文件包括字节码么?

写回答

1回答

翔仔

2020-04-24

同学好,感觉同学需要理解javap是个什么东西,javap是 JDK自带的一个工具,可以将 class文件反编译成字节码,它并没有将class文件反编译成 java文件,但是依然反编译成可读的格式。所以它会依据不同的参数,输出不同的内容,如果-c的话,输出的就是纯字节码,因为我们的字节码先前是被编过码的,所以javap可以转成可看的。

此外,idea会自带将字节码转成源码的插件工具。

字节码不仅包括虚指令,还包括其他的,比如定义结构 数据类型 方法 这些

https://zhuanlan.zhihu.com/p/45050364


0
5
慕函数8175591
回复
翔仔
老师这块还是不太懂,class文件是Java JDK 编译后的二进制字节码。直接打开class文件看到的为啥不是二进制文件呢。然后javap指令是将二进制码反编译成了可以阅读的指令,其实class文件里的内容和执行javap之后的是一样的只是javap输出的内容是class部分二进制码编译过来的。
2023-05-11
共5条回复

剑指Java面试-Offer直通车 百度资深面试官授课

招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航

8427 学习 · 1870 问题

查看课程