如何初始化数组对象

时间:2019-11-26 03:34:39

标签: arrays initialization

为什么在运行时出现错误:

  

arrayTest.main(arrayTest.java:5)处的线程“主”中的异常java.lang.NullPointerException

源代码如下:

public class arrayTest{
    int b;
    public static void main(String[] args){
        arrayTest[] a= new arrayTest[2];
        a[0].b=10;
        System.out.println(a[0].b);
    }
}

谢谢 苏尼尔

2 个答案:

答案 0 :(得分:1)

您尚未向阵列添加任何arrayTest实例。您仅初始化了数组,因此arrayTest[0]null。要将对象添加到数组:

arrayTest[0] = new arrayTest();
arrayTest[1] = new arrayTest();

答案 1 :(得分:1)

在进行面向对象编程(OOP)时,您需要有所不同。

您正在做的是从arrayTest类创建一个新的对象arrayTest。

该对象需要一个构造函数和作为属性的字段,因此可以很好地进行定义,例如:人的大小,年龄或眼睛的颜色。

您想让对象成为什么?

例如,我想做一个n对象的ArrayList,它是相同类型的: 首先,我的字段将是ArrayList,因为这就是我要创建的内容。

我有以下课程:

import java.lang.reflect.Type;
import java.util.ArrayList;

class arrayTestType {
    private final ArrayList arrayTest;
}

我的构造函数应该返回什么?

那么,具有n个元素的Type类型数组是ArrayList<Type>(n) 所以我的构造函数应该这样写:

public arrayTestType(Type type, int length) {
    arrayTest = new ArrayList<Type>(length);
}

所以最后我们的课是:

import java.lang.reflect.Type;
import java.util.ArrayList;

class arrayTestType {
    private final ArrayList arrayTest;

    public arrayTestType(Type type, int length){
        arrayTest = new ArrayList<Type>(length);
    }
}

现在,当我们要拨打电话时:

arrayTestType stringArrayOfLength5 = new arrayTestType<String>(5);

我们将获得一个定义明确的对象。 现在,您需要添加一些东西,以使其不为null,因此为null指针! 祝你好运!