同一个 Java 文件用不同的 jdk 编译出的 class 文件是一样的吗

2025-03-13 01:27:15
推荐回答(4个)
回答1:

不一样
不同点主要体现在两个部分:
1、每个class文件的开头几个字节中有标识jdk版本的数值信息,这个应该不一样,比如jdk5编译的是49,jdk6编译的是50;javac 有两个参数是 -source <版本> 和 -target <版本>,一般来说,如果target相同的话,编译出来的class文件时完全相同的,但是反之则不一定相同
2、有些编译器在编译时会进行优化,比如将static final的常量直接inline到使用该常量的地方

回答2:

不一样,不同的操作系统的jdk都不同,因为高级语言首先转换为汇编语言,再转换为机器语言,而每个系统的汇编都是不同的,所以java作为高级语言在不同的系统上转换的汇编语言都不同,class就不同。

回答3:

这个是不一样的。因为jdk的版本导致jdk的内容不同,从而编译出的class文件也会不一样,运行时,会出现异常!

回答4:

不一样的,class文件中会存有jdk版本信息等等等等,还有一些其他区别等