比较 BigIntegers

你可以比较 BigIntegers 与你在 Java 中比较 String 或其他对象相同。

例如:

BigInteger one = BigInteger.valueOf(1);
BigInteger two = BigInteger.valueOf(2);

if(one.equals(two)){
    System.out.println("Equal");
}
else{
    System.out.println("Not Equal");
}

输出:

Not Equal

注意:

在一般情况下,千万不能使用使用 == 运算符来比较 BigIntegers

  • == 运算符:比较引用; 即两个值是否指向同一个对象
  • equals() 方法:比较两个 BigIntegers 的内容。

例如,应按以下方式比较 BigIntegers :

if (firstBigInteger == secondBigInteger) {
  // Only checks for reference equality, not content equality!
}

这样做可能会导致意外行为,因为 == 运算符仅检查引用相等性。如果两个 BigIntegers 包含相同的内容,但不引用同一个对象,**则会失败。**相反,使用 equals 方法比较 BigIntegers,如上所述。

你还可以将你的 BigInteger 与 0,1,10 之类的常量值进行比较。

例如:

BigInteger reallyBig = BigInteger.valueOf(1);
if(BigInteger.ONE.equals(reallyBig)){
    //code when they are equal.
}    

你还可以使用 compareTo() 方法比较两个 BigIntegers,如下所示:compareTo() 返回 3 个值。

  • 0: 当两者相等时
  • 1: 当第一个大于第二个时(括号中的那个)。
  • -1: 当第一个小于秒时。
BigInteger reallyBig = BigInteger.valueOf(10);
BigInteger reallyBig1 = BigInteger.valueOf(100);

if(reallyBig.compareTo(reallyBig1) == 0){
    //code when both are equal.
}
else if(reallyBig.compareTo(reallyBig1) == 1){
    //code when reallyBig is greater than reallyBig1.
}
else if(reallyBig.compareTo(reallyBig1) == -1){
    //code when reallyBig is less than reallyBig1.
}