有没有办法在Java中声明一个无符号的int?
或者这个问题也可以这样提出来。 无符号的Java对应物是什么?
只是想告诉你背景,我在看Java'的String.hashcode()
的实现。我想测试一下,如果整数是32个无符号int._,是否有可能发生碰撞。
Java没有无符号整数的数据类型。
如果你需要存储大的数值,你可以定义一个long而不是一个`int'。
你也可以使用一个有符号的整数,就像它是无符号的一样。二补表示法]6的好处是大多数操作(如加法、减法、乘法和左移)对于有符号和无符号的整数在二进制水平上是相同的。然而,少数操作(除法、右移、比较和铸造)是不同的。从Java SE 8开始,Integer
类中的新方法允许你完全使用int
数据类型来执行无符号算术。
在Java SE 8及以后的版本中,你可以使用int数据类型来表示一个无符号的32位整数,它的最小值是0,最大值是2^32-1。使用Integer类来使用int数据类型作为无符号整数。静态方法如
compareUnsigned
,divideUnsigned
等已被添加到Integer类中,以支持无符号整数的算术操作。
请注意,"int "变量在声明时仍然是有符号的,但通过使用 "Integer "类中的这些方法,现在可以进行无符号算术。
有一个Java 8中无符号整数和龙的API! 。