gpt4 book ai didi

java - 为什么在循环中分配数组中的引用后会出现 NullPointerExceptions?

转载 作者:行者123 更新时间:2023-11-29 09:38:32 24 4
gpt4 key购买 nike

为什么这不起作用:

//...
Integer[] array=new Integer[5];
for(Integer x: array){x=-1;}
printArray(array);
//...

// the print function is the following
public static String printArray(Object[] array){
String str="";
for(Object obj : array){
str+=obj.toString()+" ,";
}
System.out.println(str);
}

我在 printArray 函数的 for-each 语句中得到 NullPointerException,为什么?

最佳答案

因为您从未使用任何值初始化数组,所以它只包含一堆 null。在调用 .toString() 之前,您需要给它赋值。

例如:

Integer[] array = new Integer[5] { 1, 2, 3, 4, 5 };

您的初始循环 (x = -1} 不会更改数组,而是更改循环中的 transient 对象 x。就像这样做:

for (int i = 0; i < array.length; i++) {
Integer j = array[i];
j = -1;
}

相反,如果您想使用循环来初始化,请执行此操作:

for (int i = 0; i < array.length; i++) {
array[i] = -1;
}

关于java - 为什么在循环中分配数组中的引用后会出现 NullPointerExceptions?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5502199/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com