【问题标题】:How do I check if two strings are equal in Java when either one of the strings can be a null? [duplicate]当其中一个字符串可以为空时,如何检查Java中的两个字符串是否相等? [复制]
【发布时间】:2021-01-05 00:21:58
【问题描述】:

我有两个字符串...

String s1 = /* any string, could be null */;
String s2 = /* any string, could be null */;

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

我不能做s1.equals(s2) 因为如果s1 == null 是 NullPointer。

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

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;
}

【问题讨论】:

  • @Swati 请不要推荐第三方库。

标签: java


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    你可以像这样比较字符串。 这是 Java 内部代码使用的。

    public boolean stringsAreEqual(String s1, String s2) {
        return (s1 == null ? s2 == null : s1.equals(s2));
    }
    

    【讨论】:

      【解决方案3】:

      A==空? B==null : A.equals(B)

      【讨论】:

      • 请添加更多信息或解释以证明答案的合理性。
      • 比我通常写的“可读性”要低,但这是一个很好的简洁解决方案。 :)
      【解决方案4】:

      看来您可以先创建方法static,然后再测试s1 是否为null,如果是测试s2 是否为null。否则比较s1s2。喜欢,

      public static boolean stringsAreEqual(String s1, String s2) {
          if (s1 == null) {
              return s2 == null;
          }
          return s1.equals(s2);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-30
        • 2015-07-16
        • 2018-06-07
        • 2019-09-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多