为什么int和double是默认的Java原语而不是long和double?

我在这里看到了一些类似的问题,但其中大多数只是人们抱怨不得不使用长包装等。

我的问题,更准确地说,是如果 double 的宽度是 64 位并且 Java 使用它作为默认值,为什么 Java 仍然使用 int 作为默认值(宽度为 32 位)而不是 long,它的宽度也为64位?

如果是出于内存问题(这在大多数现代机器上并不是真正的问题),为什么他们不也将 float 设置为默认值而不是 double 值?

似乎他们一方面可以使用 64 位宽度,但将另一方面限制为 32 位,这对我来说没有多大意义。

感谢您的澄清!

回答

Java中没有默认的数字数据类型。

事实上,Java语言显示出任何偏好的唯一情况是整数和浮点文字的语法......其中文字的含义int或者double如果您不使用后缀。

请注意,64 位浮点数比 32 位更受欢迎!!

似乎他们一方面可以使用 64 位宽度,但将另一方面限制为 32 位,这对我来说没有多大意义。

首先,没有这样的限制。这只是一个次要的语法问题。

其次,考虑到 Java 最初是在许多硬件对 64 位整数没有良好(快速)支持的情况下设计的,因此(轻微)倾向于int过度long理解。

内存问题也很重要。请注意,Java 的第一个版本根本不支持 64 位架构。在 Intel / AMD 上,它直到 Java 1.4.x 才可用。而且这种规模的记忆不是“商品”项目。

如果是出于内存问题(这在大多数现代机器上并不是真正的问题),为什么他们不也将 float 设置为默认值而不是 double 值?

因为即使在 1990 年代,他们也认识到只有约 7-8 位十进制数字精度的 32 位浮点对于大多数需要使用浮点的应用程序来说是有问题的。这也解释了为什么MathAPI 方法使用double而不是float在大多数情况下。


无论如何,决定以“喜欢”intlong(如上所述)是在20多年前烤成Java语言。现在改变这一点会破坏数十亿行现有 Java 源代码的源代码兼容性。它不会发生。Oracle 的付费客户不会让它发生。

  • See the last paragraph. The explanation is simple. It would break too much existing code. And everyone who learned Java prior to (say) Java 15 would have to **relearn** this.

以上是为什么int和double是默认的Java原语而不是long和double?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>