https://blog.csdn.net/weixin_62079735/article/details/131577693

1. 未初始化的引用

当一个引用没有被初始化(即没有指向任何对象),而我们试图使用该引用调用方法、访问字段或者访问数组时,就会触发空指针异常。例如:

String str;
System.out.println(str.length());  // 空指针异常

在这个例子中,变量str没有被初始化,它的值为null,因此调用length()方法时会引发空指针异常。

2. 返回值为null

有时,我们调用一个方法并期望它返回一个非空对象,但实际上它返回了null。如果我们对返回值没有进行适当的检查,然后试图在返回值上调用方法或访问字段,就会发生空指针异常。例如:

String str = getSomeString();
System.out.println(str.length());  // 可能触发空指针异常

// ...

public String getSomeString() {
    // ...
    return null;
}

在这个例子中,getSomeString()方法返回了null,而我们没有检查返回值,直接对其调用length()方法,这可能导致空指针异常。

3. 数组操作

在数组操作中,如果我们使用了一个空数组引用或者访问了一个不存在的数组索引,都会导致空指针异常。例如:

String[] array = null;
System.out.println(array[0]);  // 空指针异常

// 或

String[] array = new String[5];
System.out.println(array[10]);  // 空指针异常

在第一个例子中,数组array被赋值为null,因此访问任何数组索引都会导致空指针异常。在第二个例子中,数组array的长度为5,但我们试图访问索引为10的元素,这也会引发空指针异常。