Ich kann nicht verstehen, warum, wenn ich die Methode println für das viertel-Objekt verwende, den Wert der toString-Methode zurückgibt. Ich habe nie die toString-Methode aufgerufen, warum bekomme ich den Rückgabewert?
%Vor%Ein Verweis auf Java-Dokumente, was ich feststellen kann,
Wenn Sie die Methode PrintStream class print (obj) / println (obj) aufrufen, ruft sie intern die Methode write mit dem Argument String.valueOf (obj) auf. unten gezeigt:
%Vor%Nun String.valueOf (obj) ruft die String-Methode wie folgt auf:
%Vor% Weil PrintStream.println
eine Überladung hat, die ein Object
benötigt, und ruft dann seine toString
Methode auf.
Weil diese Funktion so funktioniert: Sie formatiert die primitiven Typen für Sie, aber wenn Sie ein Objekt übergeben, wird% code% darauf aufgerufen.
Wenn Sie es nicht überschreiben, wird es die standardmäßige .toString()
Implementierung ( .toString()
) ausgeben, die nicht wirklich nützlich ist ...
Da alle Klassen in Java Unterklassen von java.lang.Object sind, wird beim Versuch, die System.out.println () -Methode zum Drucken des Objekts aufzurufen, die Methode toString () der Object-Klasse aufgerufen.
Aus Sicherheitsgründen druckt die Methode einen Hashcode, nicht die Werte dieses Objekts. aber Sie haben diese Methode in Ihrer Klasse geerbt und ihre Definition auf Druckobjektwerte erweitert
%Vor%Sie erhalten also einen Rückgabewert.