Java 中的字符串是 char 数组内部支持的对象。由于数组是不可变的,而字符串是保存字符的特殊数组,因此字符串也是不可变的。

Java的String类包含了很多对字符串进行各种操作的方法,如compare()、concat()、equals()、split()、length()、replace()、compareTo()、substring()、在这些方法中,我们将重点关注 compareTo() 方法。

String.compareTo() 方法

Java String 类的compareTo() 方法按字典顺序将给定字符串与当前字符串进行比较。它返回正数、负数或 0。它根据字符串中每个字符的 Unicode 值来比较字符串。

如果第一个字符串按字典顺序大于第二个字符串,则返回正数(字符值之差)。如果第一个字符串按字典顺序小于第二个字符串,则返回负数;如果第一个字符串按字典顺序等于第二个字符串,则返回 0。

compareTo()方法有三个变体。本文将全部介绍如下

1。 intcompareTo(Object obj)

此方法将此字符串与另一个对象进行比较。

语法:

int CompareTo(Object obj)

参数:

返回值: 如果参数是一个按字典顺序等于该字符串的字符串,则返回值为 0;如果参数是按字典顺序大于该字符串的字符串,则该值小于 0;如果参数是按字典顺序小于该字符串的字符串,则该值大于 0。

Java
//Java代码演示
//compareTo() 的工作原理
​
公共类 Cmp1 {
公共静态无效主(字符串参数[])
{
​
​​​​// 初始化字符串
字符串str1 =“geeksforgeeks”;
String str2 = new String("geeksforgeeks");
String str3 = new String("astha");
​
​​​​//检查是否为geeksforgeeks字符串
// 相当于 geeksforgeeks 对象
系统.输出.print(
“geeksforgeeks(obj) 和 geeksforgeeks(str) 的区别:”);
System.out.println(str1.compareTo(str2));
​
​​​​//检查是否为geeksforgeeks字符串
// 等同于 astha 对象
系统.输出.print(
“astha(obj) 和 geeksforgeeks(str) 的区别:”);
System.out.println(str1.compareTo(str3));
}
}


Java
//Java代码演示//compareTo() 的工作原理

公共类 Cmp2 {
公共静态无效主(字符串参数[])
{

// 初始化字符串
字符串str1 =“geeksforgeeks”;
String str2 = "geeksforgeeks";
字符串 str3 = "astha";

// 检查 geeksforgeeks 字符串是否存在
// 相当于 geeksforgeeks 字符串
系统.输出.print(
"geeksforgeeks(str) 和 geeksforgeeks(str) 的区别:");
System.out.println(str1.compareTo(str2));

// 检查 geeksforgeeks 字符串是否存在
// 等于 astha 字符串
系统.输出.print(
“astha(str) 和 geeksforgeeks(str) 的区别:”);
System.out.println(str1.compareTo(str3));
}
}


Java
//Java代码演示
//compareToIgnoreCase() 的工作原理

公共课 Cmp3 {
公共静态无效主(字符串参数[])
{

// 初始化字符串
String str1 = "极客";字符串str2 =“gEEkS”;

// 检查 geeksforgeeks 字符串是否存在
// 相当于 geeksforgeeks 字符串
// 区分大小写
系统.输出.print(
“极客和 gEEkS 的区别(区分大小写):”);
System.out.println(str1.compareTo(str2));

// 检查 geeksforgeeks 字符串是否存在
// 等于 astha 字符串
// 不区分大小写
// 使用compareToIgnoreCase()
系统.输出.print(
“极客和 gEEkS 的区别(不区分大小写):”);
System.out.println(str1.compareToIgnoreCase(str2));
}
}


输出
geeksforgeeks(obj)和geeksforgeeks(str)的区别: 0
astha(obj) 和 geeksforgeeks(str) 的区别 : 6

2. int CompareTo(String anotherString)

此方法按字典顺序比较两个字符串。

句:

int CompareTo(String anotherString)

参数:

返回值: 如果参数是一个按字典顺序等于该字符串的字符串,则返回值为 0;如果参数是按字典顺序大于该字符串的字符串,则该值小于 0;如果参数是按字典顺序小于该字符串的字符串,则该值大于 0。

Java

//Java代码演示
//compareTo() 的工作原理
​
公共类 Cmp2 {
公共静态无效主(字符串参数[])
{
​
​​​​// 初始化字符串
字符串str1 =“geeksforgeeks”;
String str2 = "geeksforgeeks";
字符串 str3 = "astha";
​
​​​​//检查是否为geeksforgeeks字符串
// 相当于 geeksforgeeks 字符串
系统.输出.print(
"geeksforgeeks(str) 和 geeksforgeeks(str) 的区别:");
System.out.println(str1.compareTo(str2));
​
​​​​//检查是否为geeksforgeeks字符串
// 等于 astha 字符串
系统.输出.print(
“astha(str) 和 geeksforgeeks(str) 的区别:”);
System.out.println(str1.compareTo(str3));
}
}
输出
geeksforgeeks(str) 和 geeksforgeeks(str) 的差异: 0
astha(str) 和 geeksforgeeks(str) 的区别:6

3. intcompareToIgnoreCase(String str)

此方法按字典顺序比较两个字符串,忽略大小写差异。

语法:

int CompareToIgnoreCase(String str)

参数:

返回值:此方法返回负整数、零或正整数,因为指定的字符串大于、等于或小于此字符串,忽略大小写。

Java

//Java代码演示
//compareToIgnoreCase() 的工作原理
​
公共课 Cmp3 {
公共静态无效主(字符串参数[])
{
​
​​​​// 初始化字符串
String str1 = "极客";
字符串str2 =“gEEkS”;
​
​​​​//检查是否为geeksforgeeks字符串
// 相当于 geeksforgeeks 字符串
// 区分大小写
系统.输出.print(
“极客和 gEEkS 的区别(区分大小写):”);
System.out.println(str1.compareTo(str2));
​
​​​​//检查是否为geeksforgeeks字符串
// 等于 astha 字符串// 不区分大小写
// 使用compareToIgnoreCase()
系统.输出.print(
“极客和 gEEkS 的区别(不区分大小写):”);
System.out.println(str1.compareToIgnoreCase(str2));
}
}
输出
极客和gEEkS的区别(区分大小写):32
geeks 和 gEEkS 的区别(不区分大小写):0