Java 字串 compareTo() 方法

compareTo() 方法用於對字串執行自然排序。自然排序是指應用於物件的排序順序,例如 String 的詞法順序,排序整數的數字順序等。

詞彙順序只是按字母順序排列。 compareTo 方法對字串中具有相同位置的字母進行順序比較。

compareTo 在介面 java.lang.Comparable 中定義

語法

public int compareTo(String str)

引數輸入:

str - 此方法僅接受一個為 String 資料型別的輸入。

返回值:

此 Java 方法返回一個 int 資料型別,該資料型別基於兩個字串之間的字典比較。

  • 返回 <0,如果呼叫方法的字串在字典順序排列上靠前
  • 返回 == 0,如果兩個比較的字串在詞典上等效
  • 返回 > 0,如果傳遞給 compareTo 方法的引數在字典順序排列上靠前

讓我們通過一個例子來理解:

Java 字串 compareTo() 方法示例

public class Sample_String {
    public static void main(String[] args) {
        String str_Sample = "a";
        System.out.println("Compare To 'a' b is : " + str_Sample.compareTo("b"));
        str_Sample = "b";
        System.out.println("Compare To 'b' a is : " + str_Sample.compareTo("a"));
        str_Sample = "b";
        System.out.println("Compare To 'b' b is : " + str_Sample.compareTo("b"));
    }
}

輸出

Compare To 'a' b is : -1 
Compare To 'b' a is : 1 
Compare To 'b' b is : 0

這裡,

  • 字元 a 按字母順序排在 b 之前。因此輸出為 -1
  • 字元 b 按字母順序排在 a 之前。因此輸出為 1
  • 字元 b 是相等的的,因此輸出為 0

你可以使用 compareToIgnoreCase 方法,假如你不希望結果區分大小寫。

Java 字串 compareTo() 方法示例 2

public class Sample_String {
    public static void main(String[] args) {
        //Compare to a String
        String str_Sample = "RockStar";
        System.out.println("Compare To 'ROCKSTAR': " + str_Sample.compareTo("rockstar"));
        //Compare to - Ignore case
        System.out.println("Compare To 'ROCKSTAR' - Case Ignored: " + str_Sample.compareToIgnoreCase("ROCKSTAR"));
    }
}

輸出

Compare To 'ROCKSTAR': -32 
Compare To 'ROCKSTAR' - Case Ignored: 0

何時使用 compareTo() 方法?

compareTo() 用於按字典順序比較兩個字串。兩個字串的每個字元都轉換為 Unicode 值。但是,如果兩個字串都相等,則此方法返回 0,否則它只會產生負值或正值。

在此方法中,如果第一個字串始終按字典順序高於第二個字串,則返回正數。

如果 a1 \> a2,則返回負數

如果 a1< a2,則返回正數

如果 a1 == a2,則返回 0

Java 字串 compareTo() 方法示例 3

public class Compare {
    public static void main(String[] args) {
        String s1 = "Tastones1";
        String s2 = "Tastones2";
        System.out.println("String 1: " + s1);
        System.out.println("String 2: " + s2);
        //Compare the two strings.  
        int S = s1.compareTo(s2);
        
        //Show the results of the comparison.  
        if (S < 0) { System.out.println("\"" + s1 + "\"" + " is lexicographically higher than " + "\"" + s2 + "\"");
        } else if (S == 0) {
            System.out.println("\"" + s1 + "\"" + " is lexicographically  equal to " + "\"" + s2 + "\"");
        } else if (S > 0) {
            System.out.println("\"" + s1 + "\"" + " is lexicographically less than " + "\"" + s2 + "\"");
        }
    }
}

輸出:

String 1: Tastones1 
String 2: Tastones2 
"Tastones1" is lexicographically higher than "Tastones2"