为什么这段代码没有抛出 nullPointerException?

Tom*_*tch -1 java nullpointerexception

代码片段如下。

我知道 String 的默认值是null并且它被分配给str. 我不明白的是为什么null在第一种情况下打印而不在其他情况下打印(如第二个代码片段)。

public class Case1{

    static String str;

    public static void main(String[] args){

        System.out.println(str);
    }
}

\\Code prints 'null' without quotes
Run Code Online (Sandbox Code Playgroud)
public class Case2{

    public static void main(String[] args){

        String a[][] = { {}, null };
        System.out.println(a[1][0]);
    }
}

\\Code throws nullPointerException
Run Code Online (Sandbox Code Playgroud)

任何解释将不胜感激。

小智 5

在您的第二个示例中,您正在做的是访问不存在数组的第一个值:

String a[][] = { {}, null };
Run Code Online (Sandbox Code Playgroud)

所以 a[1] 是空值,并且没有该空值的 [0]。