当前位置: 首页 > 知识库问答 >
问题:

为什么一个Java类用空行进行不同的编译?

东门楚
2023-03-14

我有以下Java类

public class HelloWorld {
  public static void main(String []args) {
  }
}

当我编译这个文件并对得到的类文件运行sha256时

9c8d09e27ea78319ddb85fcf4f8085aa7762b0ab36dc5ba5fd000dccb63960ff  HelloWorld.class
public class HelloWorld {

  public static void main(String []args) {
  }
}
11f7ad3ad03eb9e0bb7bfa3b97bbe0f17d31194d8d92cc683cfbd7852e2d189f  HelloWorld.class

我在这篇TutorialsPoint文章中读到:

只包含空白(可能带有注释)的行被称为空白行,Java完全忽略它。

所以我的问题是,既然Java忽略空行,为什么两个程序的编译字节码不同呢?

即在HelloWorld.Class中,0x03字节被0x04字节替换。

共有1个答案

胡博艺
2023-03-14

基本上,行号是为了调试而保留的,因此,如果您以您所做的方式更改源代码,您的方法将从不同的行开始,并且编译的类反映了这种差异。

 类似资料:
  • 问题内容: 在编码python时,我仅使用2个空格进行缩进,请确保PEP-8确实建议使用4个空格,但从历史上看,这是不寻常的。 那么,谁能说服我使用4个空格而不是2个空格?有什么优缺点? PS最后,将所有现有代码库从2个空间转换为4个空间的简单方法是什么? PPS PEP-8也强烈建议不要使用制表符进行缩进。在这里阅读 因此,总结一下: 优点: 包裹长度超过80行的字符串时,要安排更多空间。 可以

  • 按照https://openjfx.io/openjfx-docs/#install-javafx的说明,我通过以下方式编译了示例HelloFX. java: 但是现在如果我试着运行它。。。 ... 我得到一个错误: 然而,报告为未找到的文件在那里: (我已经将权限更改为添加,以防出现问题,但显然这不是问题所在。 怎么了? (是的,指向)

  • 问题内容: 我试图用来创建我的,以确保我的构建/项目的质量。该项目也需要使用和。一切在我的本地计算机上都可以正常运行,但是现在我正在尝试使环境一致,可重现。当我尝试在新的虚拟机中运行时,会中断一个在本机中正常运行但 不在 新vm中运行的。 我检查了版本,,,(其)一切都是一样的。但是,我的Maven项目在此测试中失败了。 我在这里想念什么?任何想法,建议都会受到赞赏,因为我现在还没有想法,到目前为

  • 我有以下功能: <代码>坐标 这是它的重载==运算符: 如果(c==i),它会在以下位置给我一个错误: 错误:传递“常量坐标”

  • (这个问题与此密切相关,但它是一个更具体的问题,我希望能就此得到答案)