采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
图1
问题1:不是说.class文件是存储java文件翻译成的二进制字节码么?
图2
我理解的二进制应该是这样的
问题2:javap -c的说明是反汇编,意思是图1是编译成的汇编语言么?
同学好,
1.字节码文件(Java中是16进制文件)是经过编译器预处理过的一种文件,是Java的执行文件存在形式,但是文件本身是二进制文件(不是里面的内容,是整个文件),而这个二进制文件是不可以被系统直接执行的,而是需要虚拟机解释执行。
2、不能这样反推,因为会经由jvm自带的工具对文件进行解析,转换成源码,编译和反汇编的异同主要看编译器和反汇编器,因为是他们直接在处理源代码或者二进制的
老师好, 1.字节码文件(Java中是16进制文件),但是文件本身是二进制存储。这个不好理解,是字节码里的内容是16进制,但是文件本身存储在计算机都是二进制么? 2.编译和反汇编是一个相反的过程,高级语言和机器语言的互相转换,并不是字面理解反汇编就是转换成汇编语言,是这么理解么?
同学好,问题1,确实是的,文件本身是二进制文件,而里面的文字也就是内容,是被编码成16进制了。 问题2,这里的汇编并不是我们所谓的底层操作系统的汇编语言。如果说汇编指令属于底层操作系统指令,那么Java字节码指令属于Java虚拟机的指令,所以我们看到的可读的方式只是解释JVM如何看待这些字节码的含义
非常感谢!
登录后可查看更多问答,登录/注册
招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航
1.8k 27
2.7k 22
1.3k 15
1.4k 14
1.3k 14