JAVA这题为什么会报异常

2025-05-07 03:25:16
推荐回答(5个)
回答(1):

ArrayDemo[] teachers=new ArrayDemo[2];//初始化ArrayDemo类型的数组,里面的对象都是空对象,而初始化时不会去new对象,怎么可能能使用teachers[0].name。ArrayDemo类型的数组只能存放ArrayDemo类型或者其子类对象,不要认为初始化数组后,里面的对象都new完了

所以,应该是 teachers[0] = new ArrayDemo();//需要自己创建对象,之后就能调用类的属性

回答(2):

空指针了。你定义teachers这个数组之后并没有往数组里传对象啊,所以teachers[0]这个位置上就是默认的null,null怎么能有name属性呢。所以就报错了。

回答(3):

public class ArrayDemo {

String name = "sun";

public static void main(String[] args) {

ArrayDemo[] teachers = new ArrayDemo[2];//只是申请了一个内存空间,但是并没有存储数据,每个对象默认是null
ArrayDemo t1 = new ArrayDemo();
teachers[0] = t1;//为了避免对象元素为null , 所以初始化了第一个元素
System.out.println(teachers[0].name);
// ArrayDemo t2 = new ArrayDemo();
// t2.name = "tom";
// teachers[1] = t2;
// System.out.println(teachers[1].name);//初始化第二个元素

System.out.println(teachers.length);//虽然length是2,但注意此时teachers[1]=null
}

}

 运行测试

sun
2

回答(4):

你只是创建了一个ArrayDemo数组对象,但是没有实例化

正确的如下ArrayDemo[] teachers=new ArrayDemo[2];

teachers[0] = new ArrayDemo();
teachers[1] = new ArrayDemo();

回答(5):

public class ArrayDemo {

    String name="sun";

    public static void main(String[] args) {

        ArrayDemo[] teachers=new ArrayDemo[2];

        teachers[0] = new ArrayDemo(); // 数组中存储的是引用,如果这个引用没有指向示例,那么就是空指针
        System.out.println(teachers[0].name);

        System.out.println(teachers.length);
    }

}