【问题标题】:NullPointerException when comparing with null values in java [duplicate]与java中的空值进行比较时出现NullPointerException [重复]
【发布时间】:2013-07-25 05:49:07
【问题描述】:
if(status.equals(null))
{
  status="Pass";
}

上面的代码会抛出NullPointerException,请给出与null比较值的解决方案。

【问题讨论】:

  • 您要检查null 还是"null" 字符串?

标签: java exception if-statement null nullpointerexception


【解决方案1】:

看起来status 本身就是null。所以当你这样做时:

status.equals("null")

你实际上在做:

null.equals("null")

这会导致 NPE。你应该这样做:

if(status == null) //Now you're checking if the reference is null
                   //So you'll never dereference a null pointer

您可能会发现this link 很有用。


相关主题

What is null in Java?
Java null check why use == instead of .equals()

【讨论】:

  • 非常感谢你 Maroun ...
【解决方案2】:

在 Java 中,"null" 是一个字符串。您想比较对 null 的引用。执行以下操作:

if(status == null){
  // code here
}

【讨论】:

  • 嗯..我不知道@Maroun Maroun..请解释一下。
  • 那是你写 null 但如果你写 "null" 那不是字符串吗?
  • 我的回答不是这样说的吗?
  • 完全正确。对于混乱,我感到非常抱歉。我看错了你写的东西。
  • 没问题。当你强烈建议时,我感到困惑。顺便说一句,有问题的代码现在已经改变了。
【解决方案3】:

请记住,String 是 Java 中的类。因此,每当您调用具有统一对象(即空对象)的方法时,它将抛出 NullPointerException。在您的情况下,您的 String status 可能是未初始化所以你需要确保它。
顺便说一句,您应该在不使用 equals() 方法的情况下检查 null,因为检查空对象的方法的空值是没有意义的。
你必须这样做

if(status == null)
//Do something


只有在你想比较一个字符串并且在你安静的阶段确定你的字符串已经初始化时才使用 equals 方法。假设String status = ""; 是一个初始化的字符串,现在它不为空。
仅供参考
在使用equals()时,尽量使用"anyValue".equals(status)而不是status.equals("anyValue"),因为使用"anyValue".equals(status)这样会更安全,以防万一空字符串,你不会得到NullPointerException

【讨论】:

  • 比其他的解释得更好。
【解决方案4】:
if(status.equals("null")) //Just checking if string content/value is same
{
status="Pass";
}

通过这种方式,您只是在检查状态变量的值(内容)是否为“null”字符串。如果要进行空检查,则需要执行以下操作

if(null == status)
{
status="Pass";
}

【讨论】:

    【解决方案5】:

    您不应该将其设为“null”!在您的情况下,编译器将其视为字符串。

    if(stringVariable!=null)
    {
        //ur Code
    }
    

    (或)

    if(stringVariable.equals(null))
    {
        //Ur code
    }
    

    如果您使用字符串数组,您可以按照以下方式进行操作

    if(stringArray.isEmpty())//checks length of String array 
    {
    //ur code
    }
    

    【讨论】:

      【解决方案6】:

      您不能将 .equals 与 null 一起使用。使用:

      if(status == null) {
      //Do something 
      }
      

      这正是HashMap不能存储多个空值的原因。因为它总是将键与其他值进行比较,如果第二次输入空值,它会抛出 NPE。

      【讨论】:

        【解决方案7】:

        您收到此错误,因为 statusnull

        【讨论】:

        • no..Maroun 解决方案适合我
        猜你喜欢
        • 1970-01-01
        • 2020-11-15
        • 1970-01-01
        • 2011-10-19
        • 2021-09-15
        • 2016-02-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多