String.valueOf()空指针

时间:2013-11-28 11:04:36

标签: java

在java Doc中写道,如果参数为null,String.valueOf()将返回“null”,但实际上它为null参数提供了空指针异常。我想了解原因。试过看GREPCODE,无法得到它。请解释

2 个答案:

答案 0 :(得分:1)

如果你有这样的代码:

System.out.println(String.valueOf((Object) null));

“null”将打印到控制台。如果你有:

System.out.println(String.valueOf(null));

抛出NPE。

那是因为valueOf过载了。

String.valueOf(Object)

String.valueOf(char[])

要解释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