toString()

Neue Frage »

Auf diesen Beitrag antworten »
Erstsemester toString()

Meine Frage:
Hey :-)

Ich frage mich gerade, wie das genau mit der toString() - Ausgabe funktionieren soll?

Meine Ideen:
Vielen Dank
 
Auf diesen Beitrag antworten »
eulerscheZahl

toString() wird in Object definiert, von dem ja alles erbt.
Im Object werden nur Klassenname und Speicheradresse zurückgegeben, aber da man die Funktion überschreiben kann, liefert die Funktion immer sinnvolle Ergebnisse, wenn der Programmierer nicht zu faul war.
Auf diesen Beitrag antworten »
Erstsemester

Mache ich dann einfach ein Objekt von einer Klasse?

Sprich: Mensch h = new Mensch ();
h.toString();
Auf diesen Beitrag antworten »
eulerscheZahl

Ja, das würde gehen. Je nachdem, ob toString() überladen wurde, kann die Ausgabe variieren.
 
Auf diesen Beitrag antworten »
Erstsemester

Wo würde ich denn hier jetzt mein toString einbauen?

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
public class Wurf
{
	public static void main (String[]args)
	{
		Ball objekt = new Ball ();
		objekt.drucken(); 
	}
}

class Ball
{
	int ballgroesse = 5;
	
	public void drucken()
	{
		System.out.println(ballgroesse);
	}
}
Auf diesen Beitrag antworten »
eulerscheZahl

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
class Ball
{
	//...

	@Override
	public String toString() {
		return "ich bin ein Ball!";
	}
}
Auf diesen Beitrag antworten »
Erstsemester

Danke dir :-)
Auf diesen Beitrag antworten »
Karlito

Kleine Zusatzinfo: Bei der Verwendung von System.out.println() wird implizit toString() aufgerufen.

code:
1:
2:
3:
4:
Mensch m = new Mensch();
System.out.println(m);


gibt also m.toString() auf der Konsole aus.

Gleiches passiert beim impliziten Cast:

code:
1:
2:
3:
4:
Mensch m = new Mensch();
String s = "Mensch: " + m;


Hier wird auch m.toString() aufgerufen um m an einen String zu konkatenieren. Der Ausdruck ist also äquivalent zu:
code:
1:
2:
3:
4:
Mensch m = new Mensch();
String s = "Mensch: " + m.toString();


Gruß,

Karlito
Auf diesen Beitrag antworten »
Erstsemester

Aber warum benutzt man dann toString() und nicht die ganz normale System.out.println () - Funktion?

(Ich wage mal einen Ansatz: Bei System.out.println muss ich ja jeden Befehl einzeln eingeben (name, adresse, usw. --> während toString() die ganzen Daten auf einmal zieht? )
Auf diesen Beitrag antworten »
Karlito

Weil man nicht unbedingt immer auf die Konsole printen möchte. Man kann ja die Rückgabe auch anderweitig verwenden, z.B. in einer graphischen Oberfläche oder zum debuggen. Weiterhin so ist auch ein einheitlicher Zugriff möglich. Und außerdem kann so der Programmierer der toString Methode entscheiden, was ausgegeben werden soll und wie es ausgegeben werden soll.

Gruß,

Karlito
Auf diesen Beitrag antworten »
Erstsemester

Vielen Dank :-)
Auf diesen Beitrag antworten »
Björn

Ich schließe mich diesem Thema auch einmal an (bin gerade dabei, die toString() Methode zu entdecken).

Die main - Funktion:

code:
1:
2:
3:
4:
5:
6:
package javatostring;  
public class JavatoString  
{    
 public static void main(String[] args)     
{         Multiplikation multi = new Multiplikation ();         
multi.toString();     } }


Die Methode (soll einfach den Text ausgeben)

code:
1:
2:
3:
4:
5:
6:
7:
package javatostring;  
public class Multiplikation  
{     
public String toString()     
{         
String name = "Test";        
return name;       }    }



Warum bekomme ich denn keine Ausgabe (also Test) angezeigt?


Vielen Dank
Auf diesen Beitrag antworten »
eulerscheZahl

versuche mal
code:
1:
System.out.println(multi.toString());
Auf diesen Beitrag antworten »
Björn

Erst einmal danke für deine Antwort. Allerdings dachte ich immer, dass die toString - Methode genau System.out.println() ersetzen sollte?
Auf diesen Beitrag antworten »
eulerscheZahl

Nein, toString() wandelt nur in einen String um. Ob du den jetzt auf die Console pinselst, in eine Datei schreibst und über eine MessageBox ausgibst, entscheidest du.
Wenn du toString() überschreibst, kannst du es teilweise auch implizit verwenden, das heißt du musst es nicht extra schreiben.
Du könntest auch einfach schreiben
code:
1:
System.out.println(multi);

dann wird automatisch toString() aufgerufen.
Auf diesen Beitrag antworten »
Björn

Super, danke dir für die Info.
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »