Java 中任何对象都有可能为空,当我们调用空对象的方法时就会抛出 NullPointerException 空指针异常,这是一种非常常见的错误类型。我们可以使用以下方法来避免产生这类异常,使得我们的代码更为健壮。
1.String的eauqls()方法,把常量放在前面
源代码如下:
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = value.length;//如果把空对象放在前面,会报异常
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}
举例如下:
String s1 = "hello";
String s2 = null;
boolean equals = s1.equals(s2);
System.out.println(equals);//false
2.Object的equals()方法
源代码如下;
public boolean equals(Object obj) {
return (this == obj);
}
举例如下:
Object o1 = "hello";
Object o2 = null;
System.out.println(o1.equals(o2));//false
3.使用if
Student stu = new Student();
if(stu != null){
//执行相应代码
}
4.使用try-catch
把可能出现空指针异常的代码包裹到try语句中,用catch捕获异常。
try {
A a = new A();
a = null;
a.eat();
} catch (NullPointerException e) {
System.out.println("空指针异常!");
}
运行结果:
空指针异常!
这样就不会报异常了,而是显示自己写入的错误信息
5.空指针异常是用空对象调用方法导致的,此时,可以通过把方法声明为静态方法,通过“类.静态方法”的方式来避免空指针异常。