Java 使用64位jdk时的整数范围
据我所知,32位和64位的两个整数之间的差异如下: 32位范围−2147483648至2147483647 64位范围:−9223372036854775808至+9223372036854775807 我使用的是64位jdk,我通过打印以下内容来验证它: System.out.println(“JVM位大小:+System.getProperty(“sun.arch.data.model”)) JVM位大小:64 当我尝试初始化一个数字大于10个字母的新整数变量时,我得到了一个编译错误。为什么呢?看起来64位更大 示例(在netbeans上运行):Java 使用64位jdk时的整数范围,java,netbeans,64-bit,Java,Netbeans,64 Bit,据我所知,32位和64位的两个整数之间的差异如下: 32位范围−2147483648至2147483647 64位范围:−9223372036854775808至+9223372036854775807 我使用的是64位jdk,我通过打印以下内容来验证它: System.out.println(“JVM位大小:+System.getProperty(“sun.arch.data.model”)) JVM位大小:64 当我尝试初始化一个数字大于10个字母的新整数变量时,我得到了一个编译错误。为什么
int x=12345678910;=>错误:整数太大Java中的
int
的大小完全独立于JDK的32位或64位。始终为4字节=32位=−2147483648至2147483647
如果需要64位整数,请使用
long
,它始终为64位=8字节。与其他语言不同,Java的数字基元类型总是相同的大小,无论平台如何(32位或64位,LE或BE);它们都是大端,对于byte
,它们有1个字节长;对于short
和char
,它们有2个字节长;对于int
它们有4个字节长;对于long
它们有8个字节长
如果不是这样,JAR将无法跨平台移植…您最好的资源是:
整数类型为byte、short、int和long,其值分别为8位、16位、32位和64位带符号的两位补码整数,以及char,其值为表示UTF-16代码单元的16位无符号整数
4.2.1。积分类型和积分值
整数类型的值是以下范围内的整数:
没有64位的整数。可能您正在查找
long
。这意味着JDK是64位的,这意味着它的内存指针大小是64位的。这并不意味着您可以在int中分配一个大的数字,即使是32位的应用程序/cpu也会有128/256位的数字。有关jvm 32位和64位的信息:int var=2147483647;-OK long var64=9223372036854775806;=>Error msg:int类型的文本9223372036854775806超出范围您知道我为什么会出现此错误吗?如果long代表64位,它不应该在此范围内有效吗?谢谢,您需要在末尾添加一个L
,将文字标记为long
文字:9223372036854775806L
。