📅  最后修改于: 2023-12-03 15:26:54.655000             🧑  作者: Mango
在 Java 中,我们可以使用 equals()
和 compareTo()
方法来比较字符串。
equals()
方法equals()
方法比较两个字符串的内容是否相同。如果相同,返回 true
,否则返回 false
。
String str1 = "Hello";
String str2 = "World";
String str3 = "Hello";
if (str1.equals(str2)) {
System.out.println("str1 and str2 are equal");
} else {
System.out.println("str1 and str2 are not equal");
}
if (str1.equals(str3)) {
System.out.println("str1 and str3 are equal");
} else {
System.out.println("str1 and str3 are not equal");
}
输出:
str1 and str2 are not equal
str1 and str3 are equal
compareTo()
方法compareTo()
方法比较两个字符串的字典顺序。如果两个字符串相同,返回 0
。如果第一个字符串小于第二个字符串,返回一个负数。否则返回一个正数。
String str1 = "apple";
String str2 = "banana";
System.out.println(str1.compareTo(str2)); // 输出一个负数
System.out.println(str2.compareTo(str1)); // 输出一个正数
System.out.println("apple".compareTo("apple")); // 输出 0
输出:
-1
1
0
new String()
创建新字符串进行比较。因为字符串常量会放在常量池中,而 new String()
创建的新字符串对象放在堆内存中,这样会造成不必要的内存浪费。String str1 = "Hello";
String str2 = "Hello";
String str3 = new String("Hello");
if (str1 == str2) {
System.out.println("str1 and str2 are equal");
}
if (str1 == str3) {
System.out.println("str1 and str3 are equal");
} else {
System.out.println("str1 and str3 are not equal");
}
输出:
str1 and str2 are equal
str1 and str3 are not equal
equals()
方法时,要注意处理 null
值。如果两个字符串都是 null
,会抛出 NullPointerException
异常。String str1 = null;
String str2 = "Hello";
if (str1 != null && str1.equals(str2)) {
System.out.println("str1 and str2 are equal");
}
if (str2 != null && str2.equals(str1)) {
System.out.println("str2 and str1 are equal");
}
compareTo()
方法时,要注意处理 null
值。如果其中一个字符串是 null
,会抛出 NullPointerException
异常。String str1 = null;
String str2 = "Hello";
if (str1 != null && str2 != null && str1.compareTo(str2) == 0) {
System.out.println("str1 and str2 are equal");
}