比較 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.
}