Java String compareTo() 方法及示例
Java中的字符串是 char 数组内部支持的对象。由于数组是不可变的,并且字符串也是一种保存字符的特殊数组,因此,字符串也是不可变的。
Java的String类包含了很多对字符串执行各种操作的方法,例如compare()、concat()、equals()、split()、length()、replace()、compareTo()、substring()等. 在这些方法中,我们将重点关注compareTo()方法。
String.compareTo() 方法
Java String 类 compareTo() 方法按字典顺序将给定字符串与当前字符串进行比较。它返回一个正数、负数或 0。它根据字符串中每个字符的 Unicode 值比较字符串。
如果第一个字符串按字典顺序大于第二个字符串,则返回一个正数(字符值的差)。如果第一个字符串按字典顺序小于第二个字符串,则返回负数,如果第一个字符串按字典顺序等于第二个字符串,则返回 0。
Note:
- if string1 > string2, it returns positive number
- if string1 < string2, it returns negative number
- if string1 == string2, it returns 0
compareTo()方法有三种变体。本文描述了所有这些,如下
1. int compareTo(Object obj)
此方法将此字符串与另一个对象进行比较。
句法:
int compareTo(Object obj)
参数:
- obj:要比较的对象。
返回值:如果参数是一个按字典顺序等于该字符串的字符串,则返回值 0;如果参数是按字典顺序大于此字符串的字符串,则值小于 0;如果参数是按字典顺序小于此字符串的字符串,则值大于 0。
Java
// Java code to demonstrate the
// working of compareTo()
public class Cmp1 {
public static void main(String args[])
{
// Initializing Strings
String str1 = "geeksforgeeks";
String str2 = new String("geeksforgeeks");
String str3 = new String("astha");
// Checking if geeksforgeeks string
// equates to geeksforgeeks object
System.out.print(
"Difference of geeksforgeeks(obj) and geeksforgeeks(str) : ");
System.out.println(str1.compareTo(str2));
// Checking if geeksforgeeks string
// equates to astha object
System.out.print(
"Difference of astha(obj) and geeksforgeeks(str) : ");
System.out.println(str1.compareTo(str3));
}
}
Java
// Java code to demonstrate the
// working of compareTo()
public class Cmp2 {
public static void main(String args[])
{
// Initializing Strings
String str1 = "geeksforgeeks";
String str2 = "geeksforgeeks";
String str3 = "astha";
// Checking if geeksforgeeks string
// equates to geeksforgeeks string
System.out.print(
"Difference of geeksforgeeks(str) and geeksforgeeks(str) : ");
System.out.println(str1.compareTo(str2));
// Checking if geeksforgeeks string
// equates to astha string
System.out.print(
"Difference of astha(str) and geeksforgeeks(str) : ");
System.out.println(str1.compareTo(str3));
}
}
Java
// Java code to demonstrate the
// working of compareToIgnoreCase()
public class Cmp3 {
public static void main(String args[])
{
// Initializing Strings
String str1 = "geeks";
String str2 = "gEEkS";
// Checking if geeksforgeeks string
// equates to geeksforgeeks string
// case sensitive
System.out.print(
"Difference of geeks and gEEkS (case sensitive) : ");
System.out.println(str1.compareTo(str2));
// Checking if geeksforgeeks string
// equates to astha string
// case insensitive
// using compareToIgnoreCase()
System.out.print(
"Difference of geeks and gEEkS (case insensitive) : ");
System.out.println(str1.compareToIgnoreCase(str2));
}
}
Difference of geeksforgeeks(obj) and geeksforgeeks(str) : 0
Difference of astha(obj) and geeksforgeeks(str) : 6
2. int compareTo(String anotherString)
此方法按字典顺序比较两个字符串。
句法:
int compareTo(String anotherString)
参数:
- anotherString:要比较的字符串。
返回值:如果参数是一个按字典顺序等于该字符串的字符串,则返回值 0;如果参数是按字典顺序大于此字符串的字符串,则值小于 0;如果参数是按字典顺序小于此字符串的字符串,则值大于 0。
Java
// Java code to demonstrate the
// working of compareTo()
public class Cmp2 {
public static void main(String args[])
{
// Initializing Strings
String str1 = "geeksforgeeks";
String str2 = "geeksforgeeks";
String str3 = "astha";
// Checking if geeksforgeeks string
// equates to geeksforgeeks string
System.out.print(
"Difference of geeksforgeeks(str) and geeksforgeeks(str) : ");
System.out.println(str1.compareTo(str2));
// Checking if geeksforgeeks string
// equates to astha string
System.out.print(
"Difference of astha(str) and geeksforgeeks(str) : ");
System.out.println(str1.compareTo(str3));
}
}
Difference of geeksforgeeks(str) and geeksforgeeks(str) : 0
Difference of astha(str) and geeksforgeeks(str) : 6
3. int compareToIgnoreCase(String str)
此方法按字典顺序比较两个字符串,忽略大小写差异。
句法:
int compareToIgnoreCase(String str)
参数:
- str:要比较的字符串。
返回值:此方法返回负整数、零或正整数,因为指定的字符串大于、等于或小于此字符串,忽略大小写考虑。
Java
// Java code to demonstrate the
// working of compareToIgnoreCase()
public class Cmp3 {
public static void main(String args[])
{
// Initializing Strings
String str1 = "geeks";
String str2 = "gEEkS";
// Checking if geeksforgeeks string
// equates to geeksforgeeks string
// case sensitive
System.out.print(
"Difference of geeks and gEEkS (case sensitive) : ");
System.out.println(str1.compareTo(str2));
// Checking if geeksforgeeks string
// equates to astha string
// case insensitive
// using compareToIgnoreCase()
System.out.print(
"Difference of geeks and gEEkS (case insensitive) : ");
System.out.println(str1.compareToIgnoreCase(str2));
}
}
Difference of geeks and gEEkS (case sensitive) : 32
Difference of geeks and gEEkS (case insensitive) : 0