实际上,这个问题有点宽泛.我知道javac将java文件编译成字节码,一个类文件.因此,类文件应该包含jvm指令和所有这些.另一方面,查看这些指令的唯一方法是使用javap -c反编译类文件.但它不是反编译,对吧?因为如果它是反编译,它会产生java文件.所以,我的猜测是javac编译java文件2次(实际上并不是真的,但为了简单起见,我们假设),首先是jvm指令,然后是字节码,所以javap -c从字节码反编译为jvm指令.Jvm应该理解字节码,因此它无法理解指令.我在这里有点困惑.有人能解释一下这里发生了什么吗?
Javap没有反编译字节码,它反汇编它.为了解释这些差异,我们可以反过来切换术语:编译将人类可读代码转换为字节码,而汇编则将汇编指令转换为字节码.