空指针异常
- 解决所有的 NullPointerException
- 找到一个引用数据类型
- 确定这个引用数据类型不是null
- 确定这个引用数据类型使用了属性或者调用方法
class Te{
private Person p; //有一个成员变量,这个成员变量是p,类型是Person类的对象
public Person getP() {
return p;
}
public void setP(Person p) {
this.p = p;
}
}
//普通类
class Person{
String name; //成员变量引用数据类型 默认值 都是 null
int age; //int 默认值都是 0
}
public class Test {
public static void main(String[] args) {
Te te = null;
// System.out.println(te.toString());//简单版本的空指针异常;te是空的
te = new Te();
System.out.println(te.toString());
//困难版本的 ; 存在2个引用数据类型 te te.getP() -> Person对象
// System.out.println(te.getP().age);//异常te.getP()==null,没有Person对象
te.setP(new Person());
System.out.println(te.getP().age);
//进阶
System.out.println(te.getP().name);//name:null 只是打印这个null,没有使用这个null,所以不报错
//3个引用数据类型; te te.getP() name
System.out.println(te.getP().name.toLowerCase()); //使用null.方法 null.属性,所以就空指针异常
}
}