Java String 类 compareTo() 方法按字典顺序将给定字符串与当前字符串进行比较。它返回一个正数、负数或 0。
它根据字符串中每个字符的 Unicode 值比较字符串。
如果第一个字符串按字典顺序大于第二个字符串,则返回一个正数(字符值的差异)。如果第一个字符串在字典上小于第二个字符串,则返回负数,如果第一个字符串在字典上等于第二个字符串,则返回 0。
if s1 > s2, it returns positive number
if s1 < s2, it returns negative number
if s1 == s2, it returns 0
用法
public int compareTo(String anotherString)
该方法接受一个 String 类型的参数,该参数将与当前字符串进行比较。
它返回一个整数值。它抛出以下两个异常:
ClassCastException:如果此对象无法与指定的对象进行比较。
NullPointerException:如果指定的对象为空。
内部实现
int compareTo(String anotherString) {
int length1 = value.length;
int length2 = anotherString.value.length;
int limit = Math.min(length1, length2);
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (i < limit) {
char ch1 = v1[i];
char ch2 = v2[i];
if (ch1 != ch2) {
return ch1 - ch2;
}
i++;
}
return length1 - length2;
}
Java 字符串 compareTo() 方法示例
文件名:CompareToExample.java
public class CompareToExample{
public static void main(String args[]){
String s1="hello";
String s2="hello";
String s3="meklo";
String s4="hemlo";
String s5="flag";
System.out.println(s1.compareTo(s2));//0 because both are equal
System.out.println(s1.compareTo(s3));//-5 because "h" is 5 times lower than "m"
System.out.println(s1.compareTo(s4));//-1 because "l" is 1 times lower than "m"
System.out.println(s1.compareTo(s5));//2 because "h" is 2 times greater than "f"
}}
输出:
0 -5 -1 2
Java 字符串 compareTo():空字符串
当我们比较第一个或第二个字符串为空的两个字符串时,该方法返回字符串的长度。所以,可能有两种情况:
- 如果第一个字符串是空字符串,则该方法返回负数
- 如果第二个字符串是空字符串,则该方法返回一个正数,即第一个字符串的长度。
文件名:CompareToExample2.java
public class CompareToExample2{
public static void main(String args[]){
String s1="hello";
String s2="";
String s3="me";
System.out.println(s1.compareTo(s2));
System.out.println(s2.compareTo(s3));
}}
输出:
5 -2
Java 字符串 compareTo():区分大小写
为了检查 compareTo() 方法是否考虑字符的大小写敏感,我们将在相同序列中包含相同字母的两个字符串之间进行比较。
假设一个字符串的字母为大写,第二个字符串的字母为小写。在比较这两个字符串时,如果结果为 0,则 compareTo() 方法不考虑字符的大小写敏感;否则,该方法会考虑字符的大小写敏感度。
文件名:CompareToExample3.java
public class CompareToExample3
{
// main method
public static void main(String argvs[])
{
// input string in uppercase
String st1 = new String("INDIA IS MY COUNTRY");
// input string in lowercase
String st2 = new String("india is my country");
System.out.println(st1.compareTo(st2));
}
}
输出:
-32
结论:通过查看输出很明显结果不等于零。因此,compareTo() 方法负责字符的大小写敏感。
Java 字符串 compareTo():ClassCastException
当比较不兼容类型的对象时,抛出 ClassCastException。在以下示例中,我们将 ArrayList (al) 的对象与字符串文字 ("Sehwag") 进行比较。
文件名:CompareToExample4.java
// import statement
import java.util.*;
class Players
{
private String name;
// constructor of the class
public Players(String str)
{
name = str;
}
}
public class CompareToExample4
{
// main method
public static void main(String[] args)
{
Players ronaldo = new Players("Ronaldo");
Players sachin = new Players("Sachin");
Players messi = new Players("Messi");
ArrayList<Players> al = new ArrayList<>();
al.add(ronaldo);
al.add(sachin);
al.add(messi);
// performing binary search on the list al
Collections.binarySearch(al, "Sehwag", null);
}
}
输出:
Exception in thread "main" java.lang.ClassCastException:class Players cannot be cast to class java.lang.Comparable
Java 字符串 compareTo():NullPointerException
当空对象调用 compareTo() 方法时抛出 NullPointerException。观察以下示例。
文件名:CompareToExample5.java
public class CompareToExample5
{
// main method
public static void main(String[] args)
{
String str = null;
// null is invoking the compareTo method. Hence, the NullPointerException
// will be raised
int no = str.compareTo("India is my country.");
System.out.println(no);
}
}
输出:
Exception in thread "main" java.lang.NullPointerException at CompareToExample5.main(CompareToExample5.java:9)
相关用法
- Java String compareTo()用法及代码示例
- Java String compareToIgnoreCase()用法及代码示例
- Java String contains()用法及代码示例
- Java String copyValueOf()用法及代码示例
- Java String concat()用法及代码示例
- Java String charAt()用法及代码示例
- Java String valueOf()用法及代码示例
- Java String getChars()用法及代码示例
- Java String substring()用法及代码示例
- Java String replace()用法及代码示例
- Java String isEmpty()用法及代码示例
- Java String toString()用法及代码示例
- Java String endsWith()用法及代码示例
- Java String split()用法及代码示例
- Java String lines()用法及代码示例
- Java String repeat()用法及代码示例
- Java String strip()用法及代码示例
- Java String lastIndexOf()用法及代码示例
- Java String equals()用法及代码示例
- Java String replaceAll()用法及代码示例
注:本文由纯净天空筛选整理自 Java String compareTo()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。