为什么BigInteger.ONE不等于java中的新BigInteger(" 1")?

时间:2015-09-03 13:42:30

标签: java biginteger

在Java8中使用BigInteger类时,我编写了这段代码

System.out.println(new BigInteger("1")==BigInteger.ONE);

理想情况下,它应该打印为true,但其输出为false。为什么它的输出是假的?

3 个答案:

答案 0 :(得分:3)

SitePageGroup检查对象是否指向相同的引用,以便==条件为a = b。建议只对原始类型执行此操作。

要检查对象的内容是否相同,请使用函数equals(Object otherObject)。例如:

a == b

这将返回new BigInteger("1").equals(BigInteger.ONE); ,因为两个对象的内容是相同的。但是,使用true将返回==,因为每个对象都有不同的引用。

另一个例子是:

false

答案 1 :(得分:2)

new BigInteger("1")==BigInteger.ONE

可以重写为

BigInteger bigint =new BigInteger("1");
BigInteger bigint2= BigInteger.ONE;

现在

System.out.println(bigint ==bigint2); //false

因为他们指向不同的参考文献。

==检查参考。不是他们内心的价值。

您可以尝试使用equals()方法检查它们的相等性。

答案 2 :(得分:0)

因为你正在使用==而不是.equals(yourNumberToBeCompared)

你应该这样做:

System.out.println(new BigInteger("1").equals(BigInteger.ONE));