为什么比较null布尔值
变量可以使用操作符得到NPE,但对null
字符串
变量使用相同的操作符不能得到NPE
代码段:
public static Boolean disableDownloadOnShareURL = null;
public static String hi= null;
public static void main(String[] args)
{
try
{
if(disableDownloadOnShareURL == true)
System.out.println("Boolean Comparison True");
else
System.out.println("Boolean Comparison False");
}
catch(NullPointerException ex)
{
System.out.println("Null Pointer Exception got while comparing Boolean values");
}
try
{
if(hi == "true")
System.out.println("String Comparison True");
else
System.out.println("String Comparison False");
}
catch(NullPointerException ex)
{
System.out.println("Null Pointer Exception got while comparing String values");
}
}
输出:
Null Pointer Exception got while comparing Boolean values
String Comparison False
因为在布尔值与布尔值进行比较的情况下,VM尝试取消变量的装箱(即尝试将布尔值变为布尔值)。如果此对象为null,则会得到一个NPE。在字符串上没有完成类似的操作,因此不会得到NPE。
在以下代码中,我得到了一个Java·朗空指针异常: 它发生在最后一个if语句中。我使用了日志文件:fragen.size()是30,它在I=1时崩溃 这对我来说毫无意义 请帮助;)
我得到一个空指针异常在我的code.Please帮我解决它。这是我的代码。 这是我的原木猫。 第138行为点击法-
在标记项处获取NullPointerException。getKey(),不明白问题出在哪里
我在Kotlin中使用Gson将对象转换为json字符串。 var json2可以返回正确的结果,但是var json1返回null,为什么?
我在试着写作 但是我收到编译器错误 CS1003语法错误,':'预期 是期待行为还是bug?