【发布时间】:2013-07-25 05:49:07
【问题描述】:
if(status.equals(null))
{
status="Pass";
}
上面的代码会抛出NullPointerException,请给出与null比较值的解决方案。
【问题讨论】:
-
您要检查
null还是"null"字符串?
标签: java exception if-statement null nullpointerexception
if(status.equals(null))
{
status="Pass";
}
上面的代码会抛出NullPointerException,请给出与null比较值的解决方案。
【问题讨论】:
null 还是"null" 字符串?
标签: java exception if-statement null nullpointerexception
看起来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()
【讨论】:
在 Java 中,"null" 是一个字符串。您想比较对 null 的引用。执行以下操作:
if(status == null){
// code here
}
【讨论】:
请记住,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
【讨论】:
if(status.equals("null")) //Just checking if string content/value is same
{
status="Pass";
}
通过这种方式,您只是在检查状态变量的值(内容)是否为“null”字符串。如果要进行空检查,则需要执行以下操作
if(null == status)
{
status="Pass";
}
【讨论】:
您不应该将其设为“null”!在您的情况下,编译器将其视为字符串。
if(stringVariable!=null)
{
//ur Code
}
(或)
if(stringVariable.equals(null))
{
//Ur code
}
如果您使用字符串数组,您可以按照以下方式进行操作
if(stringArray.isEmpty())//checks length of String array
{
//ur code
}
【讨论】:
您不能将 .equals 与 null 一起使用。使用:
if(status == null) {
//Do something
}
这正是HashMap不能存储多个空值的原因。因为它总是将键与其他值进行比较,如果第二次输入空值,它会抛出 NPE。
【讨论】:
您收到此错误,因为 status 是 null。
【讨论】: