为什么变量的大小不会随着我们使用的JVM(64位或32位)平台而改变?

时间:2014-07-19 09:40:15

标签: java jvm

我遇到了一个问题: 我们声明的所有变量(int,float,char double)具有相同的内存大小, 即使JVM平台不同(32位或64位) int占用4个字节 浮4个字节 char 2个字节 是什么原因?

3 个答案:

答案 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