有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Java中使用“for each”和“for”循环数组不同的结果

我试图将已定义类的数组中的所有元素设置为null。我刚刚了解了for each循环的用法,因此尝试了以下方法:

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

但是,编译后这不起作用,并且有一条警告“未使用局部变量元素的值”。我尝试了一个正常的for循环,但它按预期工作:

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

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


共 (3) 个答案

  1. # 1 楼答案

    附带说明:如果您只想用null填充数组,那么您可以使用

    Java.util.Arrays.fill(array, null);
    

    当然,您将错失学习for-each和常规for之间差异的宝贵课程的机会

  2. # 2 楼答案

    对于每个元素都是只读的,如果您设置了元素的值,则不会在数组本身中更改它,只会在循环中更改它! 例如:

        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
    
  3. # 3 楼答案

    认为你有以下的例子:

    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])的值

    希望你得到它