BigInteger 常量行为

BigInteger Constant behaviour

为什么下面的说法return是错误的?

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

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

根据规范,new 总是会创建一个新实例(否则会失败)。

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

因为它不是同一个实例,并且 == 只有 returns 如果操作数引用同一个实例(前提是它们都是引用类型,在这种情况下它们都是),则结果为假。


您几乎不想使用 a == ba != B 来比较对象。您应该改用 a.equals(b)!a.equals(b)。 (或者 Objects.equals,如果 a 可能为空)。