最佳答案
我有以下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
我在这篇tutorialpoint文章上读到:
只包含空白(可能带有注释)的行称为空行,Java完全忽略它。
所以我的问题是,既然Java忽略空行,为什么两个程序的编译字节码不同?
也就是说,在HelloWorld.class
中,0x03
字节被0x04
字节取代。