长类型的Java大小
关于这一点,我读到: 如果可能的话,您应该避免使用long,因为即使在64位操作系统中,long在不同的操作系统上也有不同的大小。Windows 64位平台将long定义为4字节,但大多数Unix操作系统指定long的大小为8字节长类型的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位
我知道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位的
这句话是什么意思
这是不言而喻的,但它显然不是指Javalong
类型。在本机代码中引用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的文本。要么是这样,要么就是你在拖,在这种情况下:做得好(但不受欢迎)。