据我所知,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; =>错误:整数太大
答案 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个字节,short
和char
长2个字节,int
长4个字节,{{1}长8个字节}}
如果不是这样的话,罐子不能跨平台移植......
答案 2 :(得分:2)
您最好的资源是JLS:
整数类型是byte,short,int和long,其值分别是8位,16位,32位和64位二进制补码整数,以及char,其值为16-表示UTF-16代码单元的位无符号整数
4.2.1。积分类型和值
整数类型的值是以下范围内的整数:
对于字节,从-128到127,包括
简而言之,从-32768到32767,包括
对于int,从-2147483648到2147483647,包括
很长一段时间,从-9223372036854775808到9223372036854775807,包括
- 醇>
对于char,从'\ u0000'到'\ uffff'(含),即从0到65535