为什么下面的语句返回false?
BigInteger bigInteger = new BigInteger("0");
System.out.println((BigInteger.ZERO == bigInteger));
我应该在新的BigInteger(?)中传递什么,以便条件为真。
答案 0 :(得分:2)
根据规范,new
始终创建一个新实例(否则将失败)。
无论分配给BigInteger.ZERO
的哪个实例,它都不是您使用new BigInteger("0")
在代码中创建的实例。
由于它不是同一实例,并且==
仅在操作数引用同一实例时(如果它们都是引用类型,在这种情况下都是引用类型),则返回true。
您几乎永远不想使用a == b
或a != B
比较对象。您应该改用a.equals(b)
或!a.equals(b)
。 (如果Objects.equals
为空,则为a
。