BigInteger常数行为

时间:2018-06-25 17:25:34

标签: java integer logic biginteger

为什么下面的语句返回false?

BigInteger bigInteger = new BigInteger("0");
System.out.println((BigInteger.ZERO == bigInteger));

我应该在新的BigInteger(?)中传递什么,以便条件为真。

1 个答案:

答案 0 :(得分:2)

根据规范,new始终创建一个新实例(否则将失败)。

无论分配给BigInteger.ZERO的哪个实例,它都不是您使用new BigInteger("0")在代码中创建的实例。

由于它不是同一实例,并且==仅在操作数引用同一实例时(如果它们都是引用类型,在这种情况下都是引用类型),则返回true。


您几乎永远不想使用a == ba != B比较对象。您应该改用a.equals(b)!a.equals(b)。 (如果Objects.equals为空,则为a