Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » toString() » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Seiten (2): [1] 2 nächste » Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen toString()
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Erstsemester
unregistriert
toString() Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Meine Frage:
Hey :-)

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

Meine Ideen:
Vielen Dank
26.01.2015 19:59
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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.

__________________
Syntax Highlighting fürs Board (Link)
26.01.2015 20:06 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Erstsemester
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Mache ich dann einfach ein Objekt von einer Klasse?

Sprich: Mensch h = new Mensch ();
h.toString();
26.01.2015 20:25
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ja, das würde gehen. Je nachdem, ob toString() überladen wurde, kann die Ausgabe variieren.

__________________
Syntax Highlighting fürs Board (Link)
26.01.2015 20:27 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Erstsemester
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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);
	}
}
26.01.2015 20:31
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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

	@Override
	public String toString() {
		return "ich bin ein Ball!";
	}
}


__________________
Syntax Highlighting fürs Board (Link)
26.01.2015 20:33 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Erstsemester
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Danke dir :-)
26.01.2015 20:39
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
26.01.2015 21:22 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
Erstsemester
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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? )
26.01.2015 21:26
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
26.01.2015 22:05 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
Erstsemester
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Vielen Dank :-)
27.01.2015 07:57
Björn
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
13.05.2015 13:44
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

versuche mal
code:
1:
System.out.println(multi.toString());


__________________
Syntax Highlighting fürs Board (Link)
13.05.2015 13:50 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Björn
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Erst einmal danke für deine Antwort. Allerdings dachte ich immer, dass die toString - Methode genau System.out.println() ersetzen sollte?
13.05.2015 13:58
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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.

__________________
Syntax Highlighting fürs Board (Link)
13.05.2015 14:02 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Seiten (2): [1] 2 nächste » Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » toString()