gpt4 book ai didi

java - Java 类文件知道空格吗?

转载 作者:行者123 更新时间:2023-11-29 06:26:10 25 4
gpt4 key购买 nike

我写了一个 Java 程序,然后编译它,然后反编译它,得到一个 Java 文件。反编译器返回了与我的原始 Java 文件完全相同的缩进的确切 Java 文件,但这就是反编译器所做的,这不是问题,我心中的问题是缩进。

由于反编译的 Java 文件与原始文件具有完全相同的缩进,我得出结论,类文件也存储缩进数据。

现在问题如下:

  1. 我的结论正确吗?

如果是:

  1. 为什么类文件需要知道缩进?

  2. 缩进是为了可读性,没有人阅读类文件,那么为什么类文件不能不存储它并节省一些空间?

  3. 类文件是否只是一个加密的 Java 源文件,反编译器可以在其中解密以还原原始文件?

最佳答案

编译的类文件包含源文件的准确空白信息。

我认为您的反编译类文件看起来与您的输入完全一样可能有两个原因:

  • 您碰巧用与反编译器使用的风格相匹配的风格编写了原始输入
  • 您实际上并没有查看反编译的源代码,而是以某种方式查看了原始文件(例如,因为反编译器没有在您认为的位置写入输出)

它们确实包含与执行的代码关联的行号以帮助调试。

但是尝试在你的一些表达式中添加一些随机空格,你会发现反编译器无法重建它们。

不,类文件不是源文件的简单“加密”,编译时会丢失大量信息(实际上可能会添加一些从引用类中获取的信息,例如调用方法的特定签名).

您甚至可以在编译期间关闭调试信息以去除更多信息(例如局部变量名称)。

关于java - Java 类文件知道空格吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59266443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com