Java中的空指针异常(NullPointerException)是Java中最常见的异常之一。它表示当尝试使用一个空对象时,程序出现了异常。这个空对象可能是一个没有被实例化的对象、一个已经被释放的对象或者一个 null 对象。在 Java 中,可以通过以下方式来避免空指针异常。
在使用对象之前一定要判断是否为空,只有在它不为空的情况下才能进行操作。可以通过以下方式来判断对象是否为空:
if (obj != null) {
// do something with obj
}
当 obj 不为空时才执行 if 后面的代码,否则忽略 if 后面的代码,不执行操作。
Objects.requireNonNull() 方法会从传递给它的对象中进行判空。如果传递的对象为 null,则抛出 NullPointerException 异常,否则返回原对象。
Object obj = ...
Objects.requireNonNull(obj);
public static void main(String[] args) {
String s = null;
if (s != null) {
System.out.println(s.length());
}
}
输出结果:无
本示例中,判断字符串变量 s 是否为空。由于 s 为 null,所以 if 后面的代码块不会被执行,避免了出现空指针异常。
public static void main(String[] args) {
String s = null;
Objects.requireNonNull(s);
System.out.println(s.length());
}
输出结果:
Exception in thread "main" java.lang.NullPointerException
at java.base/java.util.Objects.requireNonNull(Objects.java:246)
at com.example.java.exception.NullPointerExceptionExample.main(NullPointerExceptionExample.java:7)
本示例中,使用 Objects.requireNonNull() 方法对字符串变量 s 进行非空校验。由于 s 为空,所以该方法会抛出 NullPointerException 异常,避免了使用空对象导致的空指针异常。
在调用对象方法时,使用安全导航运算符(?.)进行方法调用,该符号只有在对象不为空的情况下才会进行方法调用,否则返回 null。
Object obj = ...
obj?.method();
public static void main(String[] args) {
String s = null;
System.out.println(s?.length());
}
输出结果:
null
本示例中,在调用字符串变量 s 的 length() 方法时,使用了安全导航运算符。由于 s 为空,所以该方法返回 null,避免了出现空指针异常。
总结:
避免空指针异常的方法很多,以上列举的只是其中两种。在实际开发中,可以根据具体情况选择不同的方法。无论是哪种方法,都需要我们时刻牢记非空校验的重要性,从而避免程序中出现空指针异常。
本文链接:http://task.lmcjl.com/news/13275.html