运行以下Java代码:
boolean b = false;
Double d1 = 0d;
Double d2 = null;
Double d = b ? d1.doubleValue() : d2;
Run Code Online (Sandbox Code Playgroud)
为什么会出现NullPointerException?
为什么此代码返回错误:java.lang.NullPointerException
Object obj = null;
Long lNull = null;
Long res = obj == null ? lNull : 10L;
Run Code Online (Sandbox Code Playgroud)
但是以下方式可以正常运行:
Object obj = null;
Long res = obj == null ? null : 10L;
Run Code Online (Sandbox Code Playgroud) 以下代码段使用简单的Java代码.
package pkg;
final public class Main
{
final private class Demo
{
private Integer value = null;
public Integer getValue()
{
return value;
}
}
private Integer operations()
{
Demo demo = new Demo();
return demo==null?new Integer(1):demo.getValue();
}
public static void main(String[] args)
{
Main main=new Main();
System.out.println("Value = " + String.valueOf(main.operations()));
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码按预期工作,没有问题,并Value = null在控制台上显示.
在以下return声明中,
return demo==null?new Integer(1):demo.getValue();
Run Code Online (Sandbox Code Playgroud)
由于对象demo类型的Demo是不 null,表达后:,其demo.getValue()被执行,调用getValue()所述内内 …