在java Doc中写道,如果参数为null,String.valueOf()将返回“null”,但实际上它为null参数提供了空指针异常。我想了解原因。试过看GREPCODE,无法得到它。请解释
答案 0 :(得分:1)
如果你有这样的代码:
System.out.println(String.valueOf((Object) null));
“null”将打印到控制台。如果你有:
System.out.println(String.valueOf(null));
抛出NPE。
那是因为valueOf过载了。
要解释NPE,如果检查String.valueOf(char [])的代码:
return new String(data);
,String的构造函数是:
public String(char value[]) {
this.value = Arrays.copyOf(value, value.length);
}
在这一行上,抛出一个带有语句value.length。
的NPE答案 1 :(得分:0)
您的呼叫会激活String.valueOf(char value[])
,以便在出现空参数时抛出NPE。 String.valueOf(Object value)
仅在将对象拖放到此方法时才起作用。看看here