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

  • 本文关键字:double 原语 long Java 默认 int java
  • 更新时间 :
  • 英文 :


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

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

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

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

谢谢你的解释!

没有defaultJava中的数字数据类型。

实际上,Java语言的唯一情况显示任何偏好是在整数和浮点字面值的语法…如果不使用后缀,则表示intdouble

请注意64位浮点数优先于32位浮点数!!

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

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

其次,(轻微)偏爱int而不是long是可以理解的,因为Java最初设计时,很多硬件都没有对64位整数的良好(快速)支持。

内存问题也是相关的。请注意,Java的第一个版本根本不支持64位体系结构。在Intel/AMD上,它直到Java 1.4.x才可用。这种规模的记忆并不是一种商品;项。

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

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


无论如何,决定"偏好";intlong(如上所述)在20多年前就被纳入Java语言。现在更改这个将破坏数十亿的源代码兼容性现有的Java源代码。这不会发生的。甲骨文的付费客户不会让这种情况发生。

最新更新