Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.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大小_Java_Jvm - Fatal编程技术网

长类型的Java大小

长类型的Java大小,java,jvm,Java,Jvm,关于这一点,我读到: 如果可能的话,您应该避免使用long,因为即使在64位操作系统中,long在不同的操作系统上也有不同的大小。Windows 64位平台将long定义为4字节,但大多数Unix操作系统指定long的大小为8字节 这句话是什么意思?当我想存储大于~2^31的值时,JVM如何存储该值 在计算中,JVM使用RAX还是EAX寄存器 我知道BigInteger,但我对primitive long类型感兴趣。你已经断章取义了。全文如下: 64位Java 本机代码如何受到影响? 将32位

关于这一点,我读到:

如果可能的话,您应该避免使用long,因为即使在64位操作系统中,long在不同的操作系统上也有不同的大小。Windows 64位平台将long定义为4字节,但大多数Unix操作系统指定long的大小为8字节

  • 这句话是什么意思?当我想存储大于~2^31的值时,JVM如何存储该值

  • 在计算中,JVM使用RAX还是EAX寄存器


  • 我知道BigInteger,但我对primitive long类型感兴趣。

    你已经断章取义了。全文如下:

    64位Java 本机代码如何受到影响?

    将32位本机代码移植到64位Java平台时,您将 需要将代码修改为64位干净。这涉及到检查 您的C/C++代码,并查找假定大小为 指针为4字节,或者指针可以强制转换并存储在 整数长数据类型在移植32位时也很麻烦 代码如果可能的话,应该避免使用long,因为 Long在不同的操作系统上有不同的大小,即使在 64位。Windows 64位平台将long定义为4字节,但大多数 Unix操作系统指定长度为8字节。对于 更多详细信息,请参阅下面的“了解更多信息”下的链接 64位编程

    回答您的问题:

    长类型的Java大小

    Java
    long
    类型在所有平台上都是64位的

    这句话是什么意思

    这是不言而喻的,但它显然不是指Java
    long
    类型。在本机代码中引用C或C++ <代码>长< /C> >类型。

    当我想存储大于~2^31的值时,JVM如何存储该值

    在Java代码中,使用
    long
    。它起作用了。JVM实现在不同的平台上以不同的方式处理它。别担心

    在C/C++本地代码中,如果您希望代码是可移植的,则存在问题。但是原始文章为您提供了一些链接,可以帮助您解决这个问题

    在计算中,JVM使用RAX还是EAX寄存器

    Java语言规范要求
    long
    具有64位(不少于,不多于)表示,并且所有
    long op long
    算法的执行精度至少为64位,以便所有平台上的答案都相同

    实际实现取决于平台。JVM/JIT编译器将(很可能)选择对当前平台最有效的寄存器和指令

    请记住,在32位Windows Intel平台上运行的JVM与64位Windows Intel平台或Solaris、ARM等平台上运行的JVM不同。对于许多平台,没有称为RAX和EAX的寄存器


    但是,如果您确实需要知道,请查看源代码,或者使用JVM选项转储JIT编译器发出的本机代码。

    除非您在“但是”之后提供缺少的部分,否则这并不意味着什么。无论平台如何,Java long始终是64位的,并且没有任何可能影响您的注册。下一部分是关于unix而不是windows,如何提供Java long是64位的?因为这是它的定义方式。您的引用是断章取义的。它指的是将32位本机代码移植到64位,这不是用Java编写的。在发布堆栈溢出之前,请更加小心。您误读了一些明确提到C/C++编码而不是Java的文本。要么是这样,要么就是你在拖,在这种情况下:做得好(但不受欢迎)。