java为什么不支持这个系统。出来在空对象上打印工作?
让我们考虑下面的代码:
public static void main(String[] args) {
Integer i = null;
Object o = null;
System.out.println(i);
System.out.println(o);
System.out.println(i.toString());
System.out.println(o.toString());
}
很明显,最后两次打印将导致NullPointerException
。不能对空对象调用方法
问题是为什么前两张照片有效?他们不是也在打电话吗
# 1 楼答案
看看
print(String s)
的实现:如果对象恰好是
null
,它只写"null"
。摘自java.io.PrintStream:GrepCode# 2 楼答案
不,不是
System.out
是一个PrintStream
,它对参数调用String.valueOf(x)
(如Javadoc中所述)# 3 楼答案
不,不是
在
System.out.println
(*)的内部有一个空指针检查类似于
(*)参数经过^{} 处理