最近从新学习数组发现了一些问题
先创建一个Person类
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public Person() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
然后主函数new Person[5]
import java.util.Random;
public class Demo01ArrayLIst {
public static void main(String[] args) {
int[] array = new int[3];
Person[] Persons = new Person[5];
Random r = new Random();
for (int i = 0; i < 5; i++) {
int anInt = r.nextInt(100);
int age = r.nextInt(120)+1;
Persons[i].setAge(age); //Exception in thread "main" java.lang.NullPointerException
Persons[i].setName("Person"+anInt);
}
for (int i = 0; i < 5; i++) {
System.out.println(Persons[i].toString());
}
}
}
一开始很疑惑明明new了为什么还会空指针异常呢。
于是开启调试
应用类型数组里面都是存放的地址
此时没有初始化,默认为null值
当我想使用set函数给类属性赋值时,由于没有指向的对象,所以造成了空指针异常