我正在阅读这本书" Java-The Complete Reference"我发现了一句话说
"整数类型的宽度不应被视为它所消耗的存储量,而应该被视为它为该类型的变量和表达式定义的行为。 java运行时环境可以随意使用它想要的任何大小,只要这些类型的行为与你声明它们的行为一样"。
这是否意味着java可以自由选择整数数据类型的大小,通常为4个字节?
答案 0 :(得分:7)
"不应将整数类型的宽度视为金额 它消耗的存储空间,
JVM可以在32位实现上以32位存储典型的Java 16位short
,以提高性能。
而是它为变量和表达式定义的行为 那种类型。 java运行时环境可以随意使用任何大小 它想要,只要类型的行为与你声明的那样"。
..但对于Java开发人员来说,它将表现为,就像16位带符号的二进制补码整数一样,无论它是如何物理存储在计算机中的。< / p>
这很有道理。您希望程序在任何JVM上运行,因此所有JVM都需要以相同的方式处理您的程序及其整数。但是JVM的实现方式对Java开发人员来说并不重要,因此它允许对架构特定的优化。
@BasilBourque在评论中指出:这是Java语言和JVM的所有规范背后的基本思想:定义所需的行为,但将实现细节留给实现者。多年来已经有很多Java实现,所有的行为都相同,但在“幕后”的内容方面却有很大的变化。