在 Java 中比较 String 的大小(即字典序或字典序)有几种常用方法,以下是详细的说明和示例:

compareTo() 方法
- 功能:按字典序比较两个字符串,返回整数值:
- 负数:当前字符串小于目标字符串。
- 零:两个字符串相等。
- 正数:当前字符串大于目标字符串。
- 规则:逐个字符比较 Unicode 值(区分大小写,大写字母的 Unicode 值小于小写字母)。
示例:
String str1 = "apple";
String str2 = "banana";
String str3 = "Apple";
System.out.println(str1.compareTo(str2)); // 输出: -1 (apple < banana)
System.out.println(str2.compareTo(str1)); // 输出: 1 (banana > apple)
System.out.println(str1.compareTo(str3)); // 输出: 32 ('a' > 'A' 的 Unicode 差值)
compareToIgnoreCase() 方法
- 功能:与
compareTo()类似,但忽略大小写。 - 示例:
String str1 = "apple"; String str3 = "Apple";
System.out.println(str1.compareToIgnoreCase(str3)); // 输出: 0 (忽略大小写后相等)
---
### **3. `equals()` 和 `equalsIgnoreCase()`**
- **功能**:检查字符串内容是否完全相等(区分大小写或不区分)。
- **返回值**:`boolean` 类型。
- **示例**:
```java
String str1 = "apple";
String str3 = "Apple";
System.out.println(str1.equals(str3)); // 输出: false (区分大小写)
System.out.println(str1.equalsIgnoreCase(str3)); // 输出: true (忽略大小写)
compareTo() 与 equals() 的区别
compareTo()返回整数值,可用于排序或大小比较。equals()仅判断是否相等,返回boolean。
自定义比较(如按长度)
如果需要按字符串长度或其他规则比较,可以自定义逻辑:
String str1 = "apple";
String str2 = "banana";
// 比较长度
if (str1.length() > str2.length()) {
System.out.println("str1 更长");
} else {
System.out.println("str2 更长或相等");
}
排序示例
使用 compareTo() 对字符串数组排序:
String[] fruits = {"banana", "apple", "cherry"};
Arrays.sort(fruits); // 默认按字典序排序
System.out.println(Arrays.toString(fruits)); // 输出: [apple, banana, cherry]
| 方法 | 功能 | 区分大小写 | 返回值 |
|---|---|---|---|
compareTo() |
字典序比较 | 是 | 整数 |
compareToIgnoreCase() |
字典序比较(忽略大小写) | 否 | 整数 |
equals() |
是否相等 | 是 | boolean |
equalsIgnoreCase() |
是否相等(忽略大小写) | 否 | boolean |
根据需求选择合适的方法,字典序比较常用 compareTo(),精确匹配用 equals()。


