为什么两个仅注释不同的 java 文件会产生不同的 class 文件?

Why should two java files that differ only in comments produce different class files?

我有一个名为 One.java 的文件,其中只有一行注释。我编译它生成 class 文件 One.class 并将其重命名为 old.class。然后,我打开 One.java,再引入五个注释行并再次编译生成 One.class。这两个 class 文件的大小 相同 ,但是当我 运行 对它们进行区分时,例如: diff One.class old.class 我得到了输出:

Binary files One.class and old.class differ

这是我的One.java文件:

// One.java
class One
{
    public static void main(String [] args)
    {
        System.out.println("Hello Java world");
    }
}

这是我修改后的One.java(带有额外的注释行):

// One.java
// One.java
// One.java
// One.java
// One.java
// One.java
class One
{
    public static void main(String [] args)
    {
        System.out.println("Hello Java world");
    }
}

我在 iMac 运行 High Sierra 上使用 Java SE 10。

调试符号;基本上,代码包括行号和其他用于调试的元数据。您可以使用 javap -v One.classjavap -v old.class

自行检查