https://blog.csdn.net/weixin_62079735/article/details/131577693
当一个引用没有被初始化(即没有指向任何对象),而我们试图使用该引用调用方法、访问字段或者访问数组时,就会触发空指针异常。例如:
String str; System.out.println(str.length()); // 空指针异常
在这个例子中,变量
str
没有被初始化,它的值为null
,因此调用length()
方法时会引发空指针异常。
null
有时,我们调用一个方法并期望它返回一个非空对象,但实际上它返回了null。如果我们对返回值没有进行适当的检查,然后试图在返回值上调用方法或访问字段,就会发生空指针异常。例如:
String str = getSomeString(); System.out.println(str.length()); // 可能触发空指针异常 // ... public String getSomeString() { // ... return null; }
在这个例子中,
getSomeString()
方法返回了null
,而我们没有检查返回值,直接对其调用length()
方法,这可能导致空指针异常。
在数组操作中,如果我们使用了一个空数组引用或者访问了一个不存在的数组索引,都会导致空指针异常。例如:
String[] array = null; System.out.println(array[0]); // 空指针异常 // 或 String[] array = new String[5]; System.out.println(array[10]); // 空指针异常
在第一个例子中,数组
array
被赋值为null
,因此访问任何数组索引都会导致空指针异常。在第二个例子中,数组array
的长度为5,但我们试图访问索引为10的元素,这也会引发空指针异常。