从对象初始化数组会导致 NullPointerException

我想从对象的数组中设置一些数据,这里是 A 类,它会导致 NullPointerException。为什么?如何解决这个问题?我的初始化有什么问题?


class A {


    int a;


    public void setA(int a) {

        this.a = a;

    }


public class ObjArry {

public static void main(String[] args) {


    A[] ObjectArray = new A[5];


    ObjectArray[0].setA(10); //Exception occurs in this line

    ObjectArray[1].setA(9);

    ObjectArray[2].setA(8);

    ObjectArray[3].setA(7);

    ObjectArray[4].setA(6);

}


慕神8447489
浏览 110回答 2
2回答

牧羊人nacy

所有其他行也会发生异常。默认情况下,新初始化的数组new A[5]是空的,即它的所有字段都是null. 您首先必须执行以下操作:ObjectArray[0] = new A();ObjectArray[1] = new A();ObjectArray[2] = new A();ObjectArray[3] = new A();ObjectArray[4] = new A();

智慧大石

JLS §10.6指出[...](新创建的1)数组的每个组件都被初始化为其默认值(第 4.12.5 节)。(1评论是我添加的。)查看§4.12.5,我们发现对于所有引用类型(第 4.3 节),默认值为null.结果,A[] ObjectArray = new A[5];创建一个长度为 5 的数组,每个单元格都包含对null.所以答案是:它发生是因为 JLS 这么说的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java