由于null值没有属性和方法,导致当你用一个null去获取属性和方法时会报出空指针异常
Person类
package Week3.CSDN; import java.util.Objects; public class Person { private String name; private String sex; public Person(String name, String sex) { this.name = name; this.sex = sex; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Person person = (Person) o; return Objects.equals(name, person.name) && Objects.equals(sex, person.sex); } @Override public int hashCode() { return Objects.hash(name, sex); } @Override public String toString() { return "Test1{" + "name='" + name + '\'' + ", sex='" + sex + '\'' + '}'; } }
测试类
package Week3.CSDN;
public class Test2 {
private Person[] people=new Person[10];
public void add(Person person){
for (int i = 0; i < people.length; i++) {
if (person!=null){
people[i]=person;
break;
}
}
}
public void delete(String name){
for (int i = 0; i < people.length; i++) {
if (people[i].getName().equals(name)){
people[i]=null;
}
}
}
public void show(){
for (Person person : people) {
if (person!=null){
System.out.println(person);
}
}
}
public static void main(String[] args) {
Test2 test=new Test2();
Person person=new Person("张三","男");
test.add(person);
test.delete("张三");
test.show();
}
}
在代码中Person类中people[i]获取了一个它的getName方法,但是由于不是每一个people都有值,导致people出现空值的情况,空值去获取属性和方法便会出现空指针异常。
解决方法:判断people[i]!=null或者name.equals(people[i].getName())