在Java中,为按位运算假设一定大小的基本类型是否安全?

Han*_*etz 4 java 64-bit

鉴于Java的"一次编写,随处运行"范例以及Java教程为所有原始数据类型提供明确的位大小这一事实,而没有丝毫暗示这依赖于任何东西,我会说,是的,int一直是32位.

但有什么警告吗?该语言规范定义的数值范围,但是一无所知的内部表示说,我想,这可能是不应该.但是,我有一些代码对int假设32位宽度的变量执行按位操作,我想知道该代码在所有体系结构上是否安全.

这类问题是否有很好的深入资源?

Ada*_*ume 13

无论本机架构如何,Java代码总是像32位一样工作.

在规范中,还有一个关于表示的权威部分:

整数类型是byte,short,int和long,其值分别为8位,16位,32位和64位二进制补码整数,以及char,其值为16位无符号整数代表UTF-16代码单元


Mic*_*rdt 6

虽然Java语言的行为是完全准确地在语言规范中指定的,但有一点需要注意:在64位结构中,int可能是字对齐的,这意味着一个int数组(或任何非64bit原语)类型)可能需要两倍于32位架构的内存.