1. 程式人生 > 其它 >字典比較compareTo() 方法詳解

字典比較compareTo() 方法詳解

compareTo() 是通過比較字典來得出結論的,比較是基於字串中每個字元的Unicode值,我們可以使用該方法判斷他們是否相等,一般用於BigDecimal的比較

首先我們看compareTo的方法

  • public int compareTo(String anotherString)
    • anotherString 代表被對比的引數
  • public int compareTo(Object o)
    • o代表物件

返回值是整形的,它對應的是第一個字元和引數的第一個字元比較的Unicode差值,如果他們不相同,就會返回他們的的差值,如果相等,就會接著比較第二個字元

  • 如果引數字串等於此字串,則返回值 0
  • 如果此字串小於字串引數,則返回一個小於 0 的值
  • 如果此字串大於字串引數,則返回一個大於 0 的值

例項

BigDecimal對比

有時候我們對比BigDecimal會直接對比int型別,那麼用equals對比需要轉為一樣的型別,否則對比的結果不同

public static void main(String[] args) {
    BigDecimal bigDecimal1 = BigDecimal.valueOf(1);
    System.out.println(bigDecimal1);
    if (bigDecimal1.equals(1)) {
        System.out.println("相等");
    }else {
        System.out.println("不相等");
    }
}

結果

如果不想轉為BigDecimal對比,想進行int和BigDecimal對比,我們可以使用compareTo()方法

public static void main(String[] args) {
    BigDecimal bigDecimal1 = BigDecimal.valueOf(1);
    BigDecimal bigDecimal2 = BigDecimal.valueOf(1);
    BigDecimal bigDecimal3 = BigDecimal.valueOf(2);
    int result;
    result = bigDecimal1.compareTo(bigDecimal2);
    System.out.println(result);
    result = bigDecimal1.compareTo(bigDecimal3);
    System.out.println(result);
    result = bigDecimal3.compareTo(bigDecimal1);
    System.out.println(result);

    if (bigDecimal1.compareTo(bigDecimal2) == 0){
        System.out.println("相等");
    }
    if (bigDecimal1.compareTo(bigDecimal3) != 0){
        System.out.println("不相等");
    }
}

結果

String對比

public static void main(String[] args) {
    String str1 = "Strings";
    String str2 = "Strings";
    String str3 = "Strings123";
    int result;
    result = str1.compareTo( str2 );
    System.out.println("str2-str1:"+result);
    result = str2.compareTo( str3 );
    System.out.println("str3-str2:"+result);
    result = str3.compareTo( str1 );
    System.out.println("str1-str3:"+result);
}