关于javac编译的问题

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

莨菽菽

2020-04-23

http://img1.sycdn.imooc.com/szimg/5ea1b174090c035c06430103.jpg

图1

问题1:不是说.class文件是存储java文件翻译成的二进制字节码么?

http://img1.sycdn.imooc.com/szimg/5ea1b1fa093c3ad503630096.jpg

图2

我理解的二进制应该是这样的

http://img1.sycdn.imooc.com/szimg/5ea1b24109ad551009740451.jpg

问题2:javap -c的说明是反汇编,意思是图1是编译成的汇编语言么?

写回答

1回答

翔仔

2020-04-24

同学好,

1.字节码文件(Java中是16进制文件)是经过编译器预处理过的一种文件,是Java的执行文件存在形式,但是文件本身是二进制文件(不是里面的内容,是整个文件),而这个二进制文件是不可以被系统直接执行的,而是需要虚拟机解释执行。

2、不能这样反推,因为会经由jvm自带的工具对文件进行解析,转换成源码,编译和反汇编的异同主要看编译器和反汇编器,因为是他们直接在处理源代码或者二进制的

0
3
莨菽菽
非常感谢!
2020-04-25
共3条回复

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

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

8427 学习 · 1870 问题

查看课程