📜  比较字符串 java (1)

📅  最后修改于: 2023-12-03 15:26:54.655000             🧑  作者: Mango

比较字符串 Java

在 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");
}