为什么 Java 类使用空行以不同的方式编译?
2022-08-31 06:04:34
我有以下Java类
public class HelloWorld {
public static void main(String []args) {
}
}
当我编译这个文件并在我得到的结果类文件上运行sha256时
9c8d09e27ea78319ddb85fcf4f8085aa7762b0ab36dc5ba5fd000dccb63960ff HelloWorld.class
接下来,我修改了类并添加了一个空行,如下所示:
public class HelloWorld {
public static void main(String []args) {
}
}
我再次在输出上运行了sha256,期望得到相同的结果,但相反,我得到了
11f7ad3ad03eb9e0bb7bfa3b97bbe0f17d31194d8d92cc683cfbd7852e2d189f HelloWorld.class
我在本教程Point文章中读到:
仅包含空格(可能带有注释)的行称为空行,Java 完全忽略它。
所以我的问题是,既然Java忽略了空行,为什么编译后的字节码对于两个程序都不同?
也就是说,字节中的差异被字节替换。HelloWorld.class
0x03
0x04