为什么 BigInteger.ONE 不等于 java 中的 new BigInteger("1")?
Why BigInteger.ONE not equals to new BigInteger("1") in java?
在Java8中使用BigInteger class时,我写了这段代码
System.out.println(new BigInteger("1")==BigInteger.ONE);
理想情况下它应该打印 true 但它的输出是 false。为什么它的输出是假的?
new BigInteger("1")==BigInteger.ONE
可以重写为
BigInteger bigint =new BigInteger("1");
BigInteger bigint2= BigInteger.ONE;
现在
System.out.println(bigint ==bigint2); //false
因为它们指向不同的引用。
== 检查引用。不是他们里面的价值。
您可以尝试使用 equals() 方法来检查它们是否相等。
因为您使用的是 == 而不是 .equals(yourNumberToBeCompared)
你应该这样做:
System.out.println(new BigInteger("1").equals(BigInteger.ONE));
==
检查对象是否指向相同的引用,因此如果 a = b
条件 a == b
。建议仅对原始类型执行此操作。
要检查对象的内容是否相同,请使用函数equals(Object otherObject)
。例如:
new BigInteger("1").equals(BigInteger.ONE);
这将 return true
,因为两个对象的内容相同。但是,使用 ==
将 return false
,因为每个对象都有不同的引用。
另一个例子是这样的:
MyObject object1 = new MyObject(30);
MyObject object2 = object1; //this will make them have the same reference
// This prints true, as they have the same content.
System.out.println(object1.equals(object2));
// This will print true, as they point the same thing, because they have the same reference
System.out.println(object1 == object2);
// We can see they have the same reference because if we edit one's field,
// the other's one will change too.
object1.number = 10;
System.out.println(object1.number); // prints 10
System.out.println(object2.number); // prints 10 too
在Java8中使用BigInteger class时,我写了这段代码
System.out.println(new BigInteger("1")==BigInteger.ONE);
理想情况下它应该打印 true 但它的输出是 false。为什么它的输出是假的?
new BigInteger("1")==BigInteger.ONE
可以重写为
BigInteger bigint =new BigInteger("1");
BigInteger bigint2= BigInteger.ONE;
现在
System.out.println(bigint ==bigint2); //false
因为它们指向不同的引用。
== 检查引用。不是他们里面的价值。
您可以尝试使用 equals() 方法来检查它们是否相等。
因为您使用的是 == 而不是 .equals(yourNumberToBeCompared)
你应该这样做:
System.out.println(new BigInteger("1").equals(BigInteger.ONE));
==
检查对象是否指向相同的引用,因此如果 a = b
条件 a == b
。建议仅对原始类型执行此操作。
要检查对象的内容是否相同,请使用函数equals(Object otherObject)
。例如:
new BigInteger("1").equals(BigInteger.ONE);
这将 return true
,因为两个对象的内容相同。但是,使用 ==
将 return false
,因为每个对象都有不同的引用。
另一个例子是这样的:
MyObject object1 = new MyObject(30);
MyObject object2 = object1; //this will make them have the same reference
// This prints true, as they have the same content.
System.out.println(object1.equals(object2));
// This will print true, as they point the same thing, because they have the same reference
System.out.println(object1 == object2);
// We can see they have the same reference because if we edit one's field,
// the other's one will change too.
object1.number = 10;
System.out.println(object1.number); // prints 10
System.out.println(object2.number); // prints 10 too