我试图在定义的类的数组中将所有元素设置为null。我刚学会了for-each循环的用法,所以我尝试了以下内容:
for(MyClass element:array){
element=null;
}
然而,这在编译后不起作用,并且存在警告"未使用局部变量元素的值"。我尝试了一个正常的for循环,它按预期工作:
for(int i=0;i<array.length;i++){
array[i]=null;
}
我的问题是为什么for-each循环没有工作?我对它的用法有误解吗?
答案 0 :(得分:5)
考虑您有以下示例:
String array[] = {"Hello", "Java"};
for (String element : array) {
element = null;
}
事实上,element
是一个变量,我可以在我的循环中使用而不是我的数组的真实元素,这相当于:
String array[] = {"Hello", "Java"};
for (int i = 0; i < array.length; i++) {
String element = array[i];
element = null;
}
因此,当您使用element = null
时,这不会更改数组的值(array[i]
)。
希望你明白。
答案 1 :(得分:1)
对于每个都是只读,如果你设置了元素的值,你就不要在数组本身中改变它,只在循环内部! 例如:
public class MainClass {
public static void main(String args[]) {
int nums[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
for(int x : nums) {
System.out.print(x + " ");
x = x * 10; // no effect on nums
}
System.out.println();
for(int x : nums)
System.out.print(x + " ");
System.out.println();
}
}
打印哪些:
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
答案 2 :(得分:1)
附注:如果你要做的就是用null
填充你的数组,你可以完全避免使用
for
个循环。
Java.util.Arrays.fill(array, null);
当然,您错过了学习有关for-each
和常规for
之间差异的宝贵课程的机会。