Java对于每个循环对象分配都不起作用

sen*_*r s 3 java arrays foreach

public class A{

    int val;    
    public A(int val){
        this.val = val;
    }

    public void print() {
        System.out.println(val);

    }


    public static void main(String args[]){

        A[] aList = new A[10];
        int temp =1;

        for(A a : aList){
            a = new A(temp++);          
        }

        for(A a : aList){
            a.print();;         
        }

    }


}
Run Code Online (Sandbox Code Playgroud)

在A.main(A.java:28)中的线程"main"java.lang.NullPointerException中获取异常aList地址空间类A对象被存储但是再次迭代无法获取存储对象,对象存储在何处?

Era*_*ran 14

a 是for循环的局部变量,因此赋值给它不会影响aList数组的元素.

您应该使用常规for循环来初始化数组:

    for(int i = 0; i < aList.length; i++){
        aList[i] = new A(temp++);          
    }
Run Code Online (Sandbox Code Playgroud)