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"