在Java中,我明白,每当我们打印对象引用,内部toString()将被调用。默认情况下,toString()将以这种格式打印“classname @ hashcode”。如果这是真的,那么下面的代码片段应该引发空指针异常。为什么没有发生?打印空,但不抛出异常
int[][] a = new int[3][];
System.out.println(a); --> Prints [[email protected]
System.out.println(a[0]); --> Prints null (It should have thrown Null pointer Exception?)
有人能帮我理解吗?
的可能的复制[什么是空指针异常,以及如何解决它?] (http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it) –
OP的并非试图修复NPE,而是试图找出原因没有人抛出。 – azurefrog
第一个println正在打印使用默认格式化程序的对象引用,而第二个打印指针。输出一个指针不会取消引用指针,只是打印它。 Java有格式化程序重载来检查null并打印“null”。真的很好。 – ScottK