当两个字符串之一可以为空时,如何检查 Java 中的两个字符串是否相等?

Ava*_*lor 1 java

我有两个字符串...

String s1 = /* any string, could be null */;
String s2 = /* any string, could be null */;
Run Code Online (Sandbox Code Playgroud)

我需要知道它们是否相等。

我不能这样做,s1.equals(s2)因为 NullPointer if s1 == null

这是检查它们是否相等的最佳方法吗?

public boolean stringsAreEqual(String s1, String s2) {
    boolean bEqual = false;
    if ((s1 == null) && (s2 == null)) {
        bEqual = true;
    } else if ((s1 != null) && s1.equals(s2)) {
        bEqual = true;
    } else if ((s2 != null) && s2.equals(s1)) {
        bEqual = true;
    }  
    return bEqual;
}
Run Code Online (Sandbox Code Playgroud)

Ami*_*era 10

您无需为此创建新方法。您可以java.util.Objects#equals(Object a, Object b)从 Java 标准库中使用。以下是 JDK 上的定义。

public static boolean equals(Object a, Object b) {
    return (a == b) || (a != null && a.equals(b));
}
Run Code Online (Sandbox Code Playgroud)