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"