Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用64位jdk时的整数范围_Java_Netbeans_64 Bit - Fatal编程技术网

Java 使用64位jdk时的整数范围

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个字母的新整数变量时,我得到了一个编译错误。为什么

据我所知,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上运行):
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。积分类型和积分值

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

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

  • 简而言之,从-32768到32767(含)

  • 对于整数,从-2147483648到2147483647,包括在内

  • 长期从-9223372036854775808到9223372036854775807,包括

  • 对于char,从'\u0000'到'\uffff',包括在内,即从0到65535


  • 没有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