使用64位jdk时的整数范围

时间:2013-07-09 16:13:48

标签: java netbeans 64-bit

据我所知,32位和2位的两个整数之间存在差异。 64位如下: 32位范围-2,147,483,648至2,147,483,647 64位范围:-9,223,372,036,854,775,808至+9,223,372,036,854,775,807

我正在使用64位jdk,我通过打印以下内容验证它: System.out.println(“JVM位大小:”+ System.getProperty(“sun.arch.data.model”));

  
    
      

JVM位大小:64

    
  

当我尝试初始化一个数字大于10个字母的新Integer变量时,我收到编译错误。这是为什么?它看起来像64位更大

示例(在netbeans上运行): int x = 12345678910; =>错误:整数太大

3 个答案:

答案 0 :(得分:19)

Java中int的大小完全独立于JDK的32位或64位。它总是4个字节= 32位= -2,147,483,648到2,147,483,647。

如果需要64位整数,请使用long,它总是64位= 8个字节。

答案 1 :(得分:3)

与其他语言不同,Java的数字基元类型总是大小相同,无论平台如何(32位或64位,LE或BE);它们都是大端,byte长1个字节,shortchar长2个字节,int长4个字节,{{1}长8个字节}}

如果不是这样的话,罐子不能跨平台移植......

答案 2 :(得分:2)

您最好的资源是JLS

  

整数类型是byte,short,int和long,其值分别是8位,16位,32位和64位二进制补码整数,以及char,其值为16-表示UTF-16代码单元的位无符号整数

     

4.2.1。积分类型和值

     

整数类型的值是以下范围内的整数:

     
      
  1. 对于字节,从-128到127,包括

  2.   
  3. 简而言之,从-32768到32767,包括

  4.   
  5. 对于int,从-2147483648到2147483647,包括

  6.   
  7. 很长一段时间,从-9223372036854775808到9223372036854775807,包括

  8.   
  9. 对于char,从'\ u0000'到'\ uffff'(含),即从0到65535

  10.