String x = (String) null;
为什么这个说法没有例外?
String x = null;
System.out.println(x);
它输出null。但是. tostring()方法应该抛出空指针异常。
String x = (String) null;
为什么这个说法没有例外?
String x = null;
System.out.println(x);
它输出null。但是. tostring()方法应该抛出空指针异常。
当前回答
这是有意为之。可以将null转换为任何引用类型。否则你就不能把它赋值给引用变量。
其他回答
Println(Object)使用String.valueOf()
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
Print(String)检查空值。
public void print(String s) {
if (s == null) {
s = "null";
}
write(s);
}
这是有意为之。可以将null转换为任何引用类型。否则你就不能把它赋值给引用变量。
可以将null转换为任何引用类型,而不会得到任何异常。
println方法不抛出空指针,因为它首先检查对象是否为空。如果为null,则输出字符串“null”。否则它将调用该对象的toString方法。
添加更多细节:内部打印方法在输入对象上调用String.valueOf(object)方法。在valueOf方法中,这个检查有助于避免空指针异常:
return (obj == null) ? "null" : obj.toString();
为了消除您的困惑,在空对象上调用任何方法都应该抛出空指针异常,如果不是特殊情况的话。
打印:
打印一个对象。由string . valueof (Object)方法生成的字符串被转换为字节
返回对象的值:
如果参数为null,则字符串等于"null";否则,返回obj.toString()的值。
当对象为空时,它将简单地返回值为“null”的字符串。
这种语言特性在这种情况下很方便。
public String getName() {
return (String) memberHashMap.get("Name");
}
如果memberHashMap.get("Name")返回null,您仍然希望上面的方法返回null而不抛出异常。不管类是什么,null都是null。