String—compareTo()

compareTo() 是字符串类 String 提供的方法,用于比较两个字符串的大小关系。
返回一个整数值,表示两个字符串之间的字典顺序关系。
具体来说,compareTo() 方法有以下几种情况:
-
如果调用该方法的字符串对象按字典顺序在参数字符串之前,那么返回一个负整数。例如:
"apple".compareTo("banana")返回一个负整数。 -
如果调用该方法的字符串对象按字典顺序在参数字符串之后,那么返回一个正整数。例如:
"banana".compareTo("apple")返回一个正整数。 -
如果两个字符串相等,那么返回 0。例如:
"hello".compareTo("hello")返回 0。
比较规则是按照字符串的 Unicode 编码进行比较。

从左到右逐个比较字符的 Unicode 值,直到找到不同的字符或者其中一个字符串结束为止。
如果找到不同的字符,则根据其 Unicode 值的大小关系确定结果。

String s1 = "apple";
String s2 = "banana";
String s3 = "apple";
String s4 = "Apple";
System.out.println(s1.compareTo(s2)); // 负整数,"apple" 在 "banana" 之前
System.out.println(s2.compareTo(s1)); // 正整数,"banana" 在 "apple" 之后
System.out.println(s1.compareTo(s3)); // 0,两个字符串相等
System.out.println(s1.compareTo(s4)); // 大于0,"apple" 在 "Apple" 之后,大写字母比小写字母的 Unicode 值大
需要注意的是,在使用 compareTo() 方法进行比较时,要确保两个字符串对象都不为 null,否则会抛出 NullPointerException。
1. 比较两个日期字符串的先后顺序
String date1 = "2022-01-01";
String date2 = "2023-01-01";
int dateCompare = date1.compareTo(date2);
if (dateCompare < 0) {
System.out.println(date1 + " is before " + date2);
} else if (dateCompare > 0) {
System.out.println(date1 + " is after " + date2);
} else {
System.out.println(date1 + " and " + date2 + " are the same date");
}
2. 比较两个版本号字符串的大小
String version1 = "1.0.1";
String version2 = "1.1.0";
int versionCompare = version1.compareTo(version2);
if (versionCompare < 0) {
System.out.println(version1 + " is an older version than " + version2);
} else if (versionCompare > 0) {
System.out.println(version1 + " is a newer version than " + version2);
} else {
System.out.println(version1 + " and " + version2 + " are the same version");
}
3. 比较两个文件名字符串的先后顺序
String filename1 = "file1.txt";
String filename2 = "file2.txt";
int filenameCompare = filename1.compareTo(filename2);
if (filenameCompare < 0) {
System.out.println(filename1 + " comes before " + filename2);
} else if (filenameCompare > 0) {
System.out.println(filename1 + " comes after " + filename2);
} else {
System.out.println(filename1 + " and " + filename2 + " are the same file");
}
519

被折叠的 条评论
为什么被折叠?



