在Java8中使用BigInteger类时,我编写了这段代码
System.out.println(new BigInteger("1")==BigInteger.ONE);
理想情况下,它应该打印为true,但其输出为false。为什么它的输出是假的?
答案 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));