1.介绍

  • Java 中的字符串是 char 数组内部支持的对象。由于数组是不可变的,而字符串也是一种保存字符的特殊数组,因此字符串也是不可变的。
  • Java 的 String 类包含许多对字符串执行各种操作的方法,我将重点关注 compareTo() 和compare()方法。

2.compareTo()

  • Java String 类 compareTo() 方法按字典顺序将给定字符串与当前字符串进行比较。它返回正数、负数或 0。它根据字符串中每个字符的 Unicode 值比较字符串。
  • 如果第一个字符串在字典序上大于第二个字符串,则它返回一个正数(字符值的差值)
  • 如果第一个字符串在字典序上小于第二个字符串,则返回负数
  • 如果第一个字符串在字典序上等于第二个字符串,则返回 0。

1)int compareTo(Object obj)

此方法将此字符串与另一个对象进行比较。
Syntax:
int compareTo(Object obj) 参数: obj:要比较的对象。
返回值:如果参数是按字典顺序等于此字符串的字符串,则值为 0;如果参数是按字典顺序大于此字符串的字符串,则该值小于 0;如果参数是按字典顺序小于此字符串的字符串,则该值大于 0。

public class Test2 {
    public static void main(String[] args) {
        // Initializing Strings
        String str1 = "a";
        String str2 = new String("a");
        String str3 = new String("b");


        System.out.print( "Difference of a(obj) and a(str) : ");
        System.out.println(str1.compareTo(str2));

        // Checking if a string
        // equates to b object
        System.out.print( "Difference of b(obj) and a(str) : ");
        System.out.println(str1.compareTo(str3));
    }
}
Difference of a(obj) and a(str) : 0
Difference of b(obj) and a(str) : -1

2)int compareTo(String anotherString)

此方法按字典顺序比较两个字符串。
Syntax:
int compareTo(String anotherString) 参数: anotherString:要比较的字符串
返回值:如果参数是按字典顺序等于此字符串的字符串,则值为 0;如果参数是按字典顺序大于此字符串的字符串,则该值小于 0;如果参数是按字典顺序小于此字符串的字符串,则该值大于 0。

public class Test2 {
    public static void main(String[] args) {
        String str1 = "a";
        String str2 = "a";
        String str3 = new String("b");

        System.out.print( "Difference of a(str and a(str) : ");
        System.out.println(str1.compareTo(str2));

        System.out.print( "Difference of b(str) and a(str) : ");
        System.out.println(str1.compareTo(str3));
    }
}
Difference of a(str and a(str) : 0
Difference of b(str) and a(str) : -1

3)int compareToIgnoreCase(String str)

此方法按字典顺序比较两个字符串,忽略大小写差异。
Syntax:
int compareToIgnoreCase(String str) 参数: str:要比较的字符串。
返回值:此方法返回负整数、零或正整数,因为指定的字符串大于、等于或小于此字符串,忽略大小写。

public class Test2 {
    public static void main(String[] args) {
        String str1 = "a";
        String str2 = "A";

        System.out.println(str1.compareTo(str2));
        System.out.println(str1.compareToIgnoreCase(str2));
    }
}
32
0

3.compare()

Java 中的 compare() 方法比较作为参数给出的两个类特定对象 (x, y)。
它返回值: 0: 如果 (x==y) -1:如果(x < y) 1: 如果 (x > y)
Syntax:
public int compare(Object obj1, Object obj2) 其中 obj1 和 obj2 是要使用 compare() 方法进行比较的两个对象。

public class Test2 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println(Integer.compare(a, b));

        int x = 30;
        int y = 30;
        System.out.println(Integer.compare(x, y));

        int w = 15;
        int z = 8;
        System.out.println(Integer.compare(w, z));
    }
}
-1
0
1
public class Test2 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println(Integer.compare(a, b));

        int x = 30;
        int y = 30;
        System.out.println(Integer.compare(x, y));

        int w = 15;
        int z = 8;
        System.out.println(Integer.compare(w, z));
    }

    public static int compare(Object obj1, Object obj2)
    {
        // 将两个对象转换为整数用于比较
        int intObj1 = (int)obj1;
        int intObj2 = (int)obj2;


        int difference = intObj1 - intObj2;

        if (difference == 0) {
            return 0;
        }
        else if (difference < 0) {
            return -1;
        }
        else {
            return 1;
        }
    }

}
-1
0
1