Java字符串compareTo()

时间:2020-02-23 14:36:54  来源:igfitidea点击:

Java String compareTo()方法用于按字典顺序比较两个字符串。
此方法在Comparable接口中声明。
由于String实现Comparable接口,所以它提供了compareTo()方法的实现。

Java字符串compareTo

Java String类具有compareTo()方法的两个变体。

  • compareTo(String anotherString):这个compareTo方法将String对象与按字典顺序传递的String参数进行比较。
    如果String对象位于传递的参数之前,则返回负整数,如果String对象跟随传递的参数String,则返回正整数。
    当两个字符串具有相同的值时,它返回0,在这种情况下,equals(String str)方法将返回true。
    比较基于字符串中每个字符的Unicode值。
    您应该检查String类源代码以检查此方法的工作方式。

  • compareToIgnoreCase(String str):这个compareTo方法与第一个类似,只是它忽略大小写。
    它使用String CASE_INSENSITIVE_ORDER Comparator进行不区分大小写的比较。
    如果此方法的返回值为0,则equalsIgnoreCase(String str)将返回true。
    当指定的String大于,等于或者小于此String时,此方法将返回负整数,零或者正整数,而忽略大小写考虑。

Java字符串compareTo示例

让我们看一个小的Java类,解释Java字符串compareTo方法的用法。

package com.theitroad.util;

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"));
  }

}

上面的compareTo示例程序的输出如下所示。

高于负输出的原因是,在字典上," ABC"比" DEF"小。
输出为-3,因为它会一一比较字符值。
您也可以使用以下测试程序确认这一点。

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()方法不同。