In Java verstehe ich, dass intern, wenn wir Objektreferenz drucken, toString() aufgerufen wird. Standardmäßig wird toString() in diesem Format "classname @ hashcode" ausgeben. Wenn dies der Fall ist, sollte das folgende Snippet die Null Pointer-Ausnahme auslösen. Warum passiert das nicht?Druckt null, aber löst keine Ausnahme aus
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?)
Könnte jemand mir helfen, dies zu verstehen?
Mögliche Duplikat [Was für eine Nullpointer ist, und wie kann ich es beheben?] (http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-fix-it) –
Die OP versucht nicht, eine NPE zu beheben, sondern versucht, herauszufinden, warum Es wird kein einziges geworfen. – azurefrog
Das erste println druckt eine Objektreferenz, die den Standardformatierer verwendet, während die zweite einen Zeiger druckt. Die Ausgabe eines Zeigers führt nicht zur Dereferenzierung des Zeigers, sondern nur zum Ausdrucken. Und Java hat den Formatierer überladen, um nach Null zu suchen und "Null" zu drucken. Irgendwie nett. – ScottK