int[][] arr=new int[3][];
System.out.println(arr[0]);// 1
char[][] array=new char[3][];
System.out.println(array[0]);// 2
在1打印的是null我知道,因为arr[0]的默认值是null
但在2打印为啥就是NullPointerException?为什么不是null?
你发现了一个编写java源码的人的一个bug(实际arr[0]对象也为空指针)
查看源码,证明这是一个bug:
直接在ecliplse 中右键点击……ut.println(arr[0]);//…… ,选择“open declaration”
然后你可以查看源码中的类方法调用关系:
调用的是print(Object obj)
调用的是print(char a[])
在然后你得到实际输出内容的就是String.valueOf(arr[0])
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
我们可以看到即使你传递过来是一个空指针,实际输出的只是小写的null
该bug描述:在PrintStream
实例中,缺少print(int a[])的方法,只有print(char a[]) 和print(object a[])