每个'的结果不同。和'对于'在Java中循环

时间:2017-05-02 10:14:55

标签: java arrays for-loop foreach null

我试图在定义的类的数组中将所有元素设置为null。我刚学会了for-each循环的用法,所以我尝试了以下内容:

for(MyClass element:array){
    element=null;
}

然而,这在编译后不起作用,并且存在警告"未使用局部变量元素的值"。我尝试了一个正常的for循环,它按预期工作:

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

我的问题是为什么for-each循环没有工作?我对它的用法有误解吗?

3 个答案:

答案 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之间差异的宝贵课程的机会。