原文: https://beginnersbook.com/2013/12/java-string-compareto-method-example/

Java String compareTo()方法用于按字典顺序比较两个字符串。两个字符串的每个字符都转换为 Unicode 值以进行比较。如果两个字符串都相等,则此方法返回 0,否则返回正值或负值。如果第一个字符串按字典顺序大于第二个字符串,则结果为正,否则结果为负。

Java String compareTo()方法

我们有以下两种使用compareTo()方法的方法:

  1. int compareTo(String str)

这里比较字符串。例如string1.compareTo(string2),其中string1string2String

  1. int compareTo(Object obj)

这里比较是在字符串和对象之间。例如string1.compareTo("Just a String object"),其中string1是一个字符串,它的值与方法参数中指定的字符串进行比较。

Java String compareTo()方法示例

这里我们有三个字符串,我们使用compareTo()方法将它们相互比较。

  1. public class CompareToExample {
  2. public static void main(String args[]) {
  3. String str1 = "String method tutorial";
  4. String str2 = "compareTo method example";
  5. String str3 = "String method tutorial";
  6. int var1 = str1.compareTo( str2 );
  7. System.out.println("str1 & str2 comparison: "+var1);
  8. int var2 = str1.compareTo( str3 );
  9. System.out.println("str1 & str3 comparison: "+var2);
  10. int var3 = str2.compareTo("compareTo method example");
  11. System.out.println("str2 & string argument comparison: "+var3);
  12. }
  13. }

输出:

  1. str1 & str2 comparison: -16
  2. str1 & str3 comparison: 0
  3. str2 & string argument comparison: 0

如何使用String compareTo()方法查找字符串的长度

在这里,我们将看到一个有趣的示例,说明如何使用compareTo()方法来查找字符串的长度。如果我们使用compareTo()方法将字符串与空字符串进行比较,则该方法将返回非空字符串的长度。

例如:

  1. String str1 = "Negan";
  2. String str2 = ""; //empty string
  3. //it would return the length of str1 in positive number
  4. str1.compareTo(str2); // 5
  5. //it would return the length of str1 in negative number
  6. str2.compareTo(str1); //-5

在上面的代码片段中,第二个compareTo()语句以负数返回长度,这是因为我们将空字符串与str1进行了比较,而在第一个compareTo()语句中,我们将str1与空字符串进行了比较。

让我们看看完整的例子:

  1. public class JavaExample {
  2. public static void main(String args[]) {
  3. String str1 = "Cow";
  4. //This is an empty string
  5. String str2 = "";
  6. String str3 = "Goat";
  7. System.out.println(str1.compareTo(str2));
  8. System.out.println(str2.compareTo(str3));
  9. }
  10. }

输出:

Java `String compareTo()`方法 - 图1

Java String compareTo()方法区分大小写吗?

在这个例子中,我们将使用compareTo()方法比较两个字符串。两个字符串都相同,但其中一个字符串为大写,另一个字符串为小写。

  1. public class JavaExample {
  2. public static void main(String args[]) {
  3. //uppercase
  4. String str1 = "HELLO";
  5. //lowercase
  6. String str2 = "hello";;
  7. System.out.println(str1.compareTo(str2));
  8. }
  9. }

输出:

Java `String compareTo()`方法 - 图2

如您所见,输出不为零,这意味着compareTo()方法区分大小写。但是我们在字符串类中有一个不区分大小写的比较方法,它是compareToIgnoreCase(),这个方法在比较两个字符串时忽略了大小写。