任何操作的对象的值为null的时候都将出现空指针错误,即“NullPointException”错误。因为成员变量和方法是属于对象的,即属于用new关键字创建出来的对象的。下面用代码来演示这个错误,并演示如何进行修正。
【范例6-22】访问对象值为null的成员变量或方法。
示例代码6-22
01 //ArrayList类所需要的
02 import java.util.ArrayList;
03
04 //test类测试访问null值的对象
05 public class test
06 {
07 //声明一个成员变量a并进行初值
08 public String a = "test类的成员变量";
09
10 //Java程序的主入口方法
11 public static void main(String[] args)
12 {
13 //创建test类的对象实例
14 test t = new test();
15
16 //创建一个集合类,对象引用为一个null值
17 ArrayList al = null;
18
19 //向一个null的集合对象里添加数据
20 al.add(t.a);
21 }
22 }
【运行结果】使用javac编译程序将产生一个和该程序对应的class程序,然后使用Java运行编译产生的class程序,运行将会发生如下异常。
Exception in thread "main" java.lang.NullPointerException
at test.main(test.java:20)
【代码解析】ArrayList类为一个集合类和数组很相似,都是用来存储数据用的。错误提示在main方法里的20行,提示为 NullPointerException,即空指针错误。对象引用al声明为一个null值,表示这个对象并没有创建其对象的实例,只是一个引用而已。当操作任意一个为null的对象的时候都将提示空指针错误。
【范例6-23】修改上述代码使程序运行通过。
示例代码6-23
01 //ArrayList类所需要的
02 import java.util.ArrayList;
03
04 //test类测试访问null值的对象
05 public class test
06 {
07 //声明一个成员变量a并进行初值
08 public String a = "test类的成员变量";
09
10 //Java程序的主入口方法
11 public static void main(String[] args)
12 {
13 //创建test类的对象实例
14 test t = new test();
15
16 //创建一个集合类,对象引用为一个null值
17 ArrayList al = new ArrayList();
18
19 //向一个null的集合对象里添加数据
20 al.add(t.a);
21
22 //打印集合al里的各个元素
23 System.out.println(al);
24 }
25 }
【运行结果】使用javac编译程序将产生一个和该程序对应的class程序,然后使用Java运行编译产生的class程序,运行结果如图6-12所示。
【代码解析】上述错误出现在“al.add(t.a)”,因为al为一个null的引用,只需将集合引用al的实例创建出来就行了。当创建了集合的对象实例后,程序将打印集合引用al的各个元素。
对本节的内容进行总结,可以概括成如下几点。
任何操作的对象的值为null,都将出现空指针错误,即“NullPointException”。
NullPointerException错误是运行期的错误,在编译的时候系统是不进行提示的。
在声明一个对象引用后尽量为其赋一个初值,来避免空指针的出现。
调用对象为null值的引用
最新推荐文章于 2025-03-31 12:42:17 发布
调用对象为null值的引用