一尘不染

在Java中声明一个unsigned int

java

有没有一种方法可以声明Java中的unsigned int?

或也可以这样构想这个问题:Java的unsigned等同于什么?

只是为了告诉你上下文,我正在查看Java的实现String.hashcode()。我想测试整数是否为32 unsigned int时发生冲突的可能性。


阅读 789

收藏
2020-03-23

共1个答案

一尘不染

Java没有无符号整数的数据类型。

如果需要存储较大的值long,int则可以定义一个,而不是一个。

你也可以使用带符号的整数,就好像它是无符号的一样。二进制补码表示法的好处在于,对于有符号和无符号整数,大多数操作(例如加法,减法,乘法和左移)在二进制级别上都是相同的。但是,一些操作(除法,右移,比较和转换)是不同的。从Java SE 8开始,Integer该类中的新方法允许你完全使用int数据类型来执行无符号算术:

在Java SE 8和更高版本中,可以使用int数据类型表示无符号的32位整数,其最小值为0,最大值为2 ^ 32-1。使用Integer类可将int数据类型用作无符号整数。像静态方法compareUnsigned,divideUnsigned等已被添加到Integer类支持算术运算的无符号整数。

请注意,int变量在声明时仍然是带符号的,但是现在可以通过使用Integer类中的这些方法来进行无符号算术运算。

2020-03-23