为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕神8447489 2022-07-27 19:57:49
我想从对象的数组中设置一些数据,这里是 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);}
查看完整描述

2 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

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


ObjectArray[0] = new A();

ObjectArray[1] = new A();

ObjectArray[2] = new A();

ObjectArray[3] = new A();

ObjectArray[4] = new A();


查看完整回答
反对 回复 2022-07-27
?
智慧大石

TA贡献1946条经验 获得超3个赞

JLS §10.6指出

[...](新创建的1)数组的每个组件都被初始化为其默认值(第 4.12.5 节)。

1评论是我添加的。)

查看§4.12.5,我们发现

对于所有引用类型(第 4.3 节),默认值为null.

结果,

A[] ObjectArray = new A[5];

创建一个长度为 5 的数组,每个单元格都包含对null.

所以答案是:它发生是因为 JLS 这么说的。


查看完整回答
反对 回复 2022-07-27
  • 2 回答
  • 0 关注
  • 106 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信