Java字串比較

2019-10-16 22:23:39

Java String compareTo()方法用於按字典順序比較兩個字串。此方法在Comparable介面中宣告。由於String實現了Comparable介面,因此它提供了compareTo()方法實現。

Java字串比較

Java StringcompareTo()方法有兩種變體。

1. compareTo(String anotherString)方法

此方法將String物件與按字典順序傳遞的anotherString引數進行比較。
如果String物件在傳遞的引數之前,則返回負整數,如果String物件在引數String之後,則返回正整數。

當兩個String都具有相同的值時返回0,在這種情況下,equals(String str)方法將返回true

比較是基於字串中每個字元的Unicode值。應該檢視String類原始碼以了解此方法的工作方式。

2. compareToIgnoreCase(String str)方法

這個方法與第一個類似,只是它忽略了大小寫。它使用String CASE_INSENSITIVE_ORDER比較器進行不區分大小寫的比較。
如果此方法的返回值為0,則equalsIgnoreCase(String str)將返回true。當指定的String大於,等於或小於此String時,此方法返回負整數,零或正整數,比較忽略大小寫。

下面來看一個java類,演示如何使用java string compareTo()方法的用法。

public class StringCompareToExample {

    /**
     * This class show String compareTo examples
     * @param args
     */
    public static void main(String[] args) {
        String str = "ABC";
        System.out.println(str.compareTo("DEF"));
        System.out.println(str.compareToIgnoreCase("abc"));
    }

}

執行上面範例程式碼,得到以下結果 -

-3
0

輸出為負值,這是因為「ABC」在字典上比「DEF」小。因為它逐個比較字元值。也可以使用以下測試程式進行確認。

public class Test {

    public static void main(String[] args) {
        char a = 'A';
        char d = 'D';
        System.out.println(a-d); //prints -3
    }

}

因此,當「ABC」與「DEF」進行比較時,將比較第一個索引處的字元。由於它們是不相同,並且’A’在字典之前出現在’D’之前,它返回一個負整數,它們之間有差值,因此輸出為-3

因此,如果將「AABC」與「ADBC」進行比較,那麼將獲得相同的輸出:-3。這就是Java String compareTo()方法範例的全部內容。請注意,此方法與String equals()方法不同。