我遇到了一个问题: 我们声明的所有变量(int,float,char double)具有相同的内存大小, 即使JVM平台不同(32位或64位) int占用4个字节 浮4个字节 char 2个字节 是什么原因?
答案 0 :(得分:4)
在Java中,Java虚拟机规范明确指出这些类型是那些大小。见2.3. Primitive Types and Values:
整数类型是:
byte
,其值为8位有符号二进制补码整数,其默认值为零short
,其值为16位带符号的二进制补码整数,其默认值为零int
,其值为32位有符号二进制补码整数,默认值为零long
,其值为64位带符号的二进制补码整数,默认值为零char
,其值为16位无符号整数,表示基本多语种平面中的Unicode代码点,使用UTF-16编码,其默认值为空代码点('\u0000'
)< / LI>浮点类型是:
float
,其值是浮点值集的元素,或者,如果支持,则为float-extended-exponent值集,其默认值为正零double
,其值是double值集的元素,或者,如果支持,则为double-extended-exponent值集,其默认值为正零
boolean
类型的值编码真值true和false,默认值为false。
正确地说,某些语言的平台相关大小真的很烦人,而且很难推理和使用它。 Java虚拟机是一个抽象机器,它独立于底层物理硬件工作。因此,尺寸由规格确定。这简化了开发平台独立软件,这也是Sun最初将Java作为"write once, run anywhere"销售的原因之一。
答案 1 :(得分:3)
Java应该是跨平台语言。即,您编写的代码应该适用于所有平台并且行为相同。这就是原始类型长度在所有平台上始终相同的原因。
答案 2 :(得分:1)
基本上JVM是根据它制作的,因此所有数据类型的规范都不会改变。 JVM专为不同的机器而设计。这是为了制作与平台无关的代码。For JVM information