【发布时间】:2011-12-26 17:59:38
【问题描述】:
这个问题在实践测试中出现:创建一个新的字符串数组,将其初始化为null,然后初始化第一个元素并打印它。为什么这会导致空指针异常?为什么不打印“一个”?它与字符串不变性有关吗?
public static void main(String args[]) {
try {
String arr[] = new String[10];
arr = null;
arr[0] = "one";
System.out.print(arr[0]);
} catch(NullPointerException nex) {
System.out.print("null pointer exception");
} catch(Exception ex) {
System.out.print("exception");
}
}
谢谢!
【问题讨论】:
-
您将
arr设置为null。当您尝试访问arr的元素时,还可能发生什么? -
我应该否决这个问题吗? >:)
-
arr是一个String[]变量。如果您将arr设置为null,那么您将String[]设置为null——初始的new String[10]消失了。然后设置arr[0]尝试使用空数组引用。您可以将arr[0]设置为null,然后将其设置为"one",但不能设置为arr数组。 -
将其视为 null[0] = "one"。
arr不再引用(“指向”之类的)最多可容纳十个Strings 的空间。
标签: java arrays string nullpointerexception