Explicit vs. impliziter Aufruf von toString

Früher habe ich den impliziten Aufruf von toString verwendet, um Debug-Informationen zu einem Objekt abzurufen, da das Objekt keine Ausnahme auslöst, wenn es null ist.

Zum Beispiel

System.out.println("obj: "+obj);

Anstatt von

System.out.println("obj: "+obj.toString());

Gibt es einen Unterschied außer dem Null-Fall?
Kann der letztere Fall funktionieren, wenn der erstere nicht funktioniert?

Bearbeiten
Was genau wird im Falle des impliziten Aufrufs getan?

Antworten auf die Frage(10)

Ihre Antwort auf die Frage