0
if(status.equals(null))
{
  status="Pass";
}

从上面抛出的代码中NullPointerException,请给出比较值的解决方案null

4

7 回答 7

6

看起来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

您可能会发现此链接很有用。


相关主题

Java 中的 null 是什么?
Java null 检查为什么使用 == 而不是 .equals()

于 2013-07-25T05:50:57.377 回答
2

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

if(status == null){
  // code here
}
于 2013-07-25T05:52:44.283 回答
2

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

if(status == null)
//Do something


仅当您想比较字符串时才使用 equals 方法,并且在您确定您的字符串已初始化的阶段,假设String status = "";是一个已初始化的字符串,现在它不为空。
只是为了在使用时的信息
equals()尝试使用它"anyValue".equals(status)而不是status.equals("anyValue")因为使用like "anyValue".equals(status),它会在空字符串的情况下更安全,你不会得到NullPointerException

于 2013-07-25T05:53:44.240 回答
0
if(status.equals("null")) //Just checking if string content/value is same
{
status="Pass";
}

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

if(null == status)
{
status="Pass";
}
于 2013-07-25T05:55:08.767 回答
0

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

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

(或者)

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

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

if(stringArray.isEmpty())//checks length of String array 
{
//ur code
}
于 2013-07-25T05:59:33.330 回答
0

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

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

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

于 2013-07-25T06:00:58.530 回答
0

您收到此错误,因为statusis null

于 2013-07-25T06:02:26.043 回答