# (String) und toString(), woliegt der Unterschied?



## BlueBook (13. Feb 2004)

Ich dachte bisher immer das beide Aufrufe das selbe bewirken würden.

Klar, Vorteil der toString-Methode ich kann die Methode für das jeweilig Objekt überschreiben und anpassen.
Während (String) ja nur "allgemein" castet.

Aufgefallen ist mmir der Unterschied wirklich aber erst jetzt, bei folgendem:


```
return wallwidth/100* Float.parseFloat(wallfield.getValue().toString());
  
return wallwidth/100* Float.parseFloat((String)wallfield.getValue());
```



Erste Zeile funktioniert, zweile Zeile funktioniert nicht.

Ähm, wallfield ist übrigens nen JSpinner und liefert Object zurück...

Was macht (String) den so "dolles" das ich noch nicht mal einen Compilerfehler bekomme, sondern einen ziemlich unaussagekräftigen Laufzeitfehler?

Ich versuche nur zu verstehen, wann ich (String) benutzen sollte, oder aber, wenn ich so wie so immer toString() benutzen sollte, weil besser, wofür dann noch (String) ?

Beste Grüße
BB


----------



## Pulvertoastman (13. Feb 2004)

Da gibt es einen gewaltigen Unterschied.


```
(String) object
```

wird als sogenanntes casten verwendet. Es ist dann sinnvoll, wenn du sicher bist, dass dein Objekt ein String ist und du den Compiler überzeugst, dass er das gefälligst auch so behandlen soll.


```
object.toString()
```

veranlasst das Objekt, seine toString() Methode auszuführen und einen String zurückzugeben.

Wenn du also ein Objekt, dass kein String ist, castest, gibt es ergo keinen Compiler Fehler. Erst die Laufzeitumgebung stellt dann fest, dass das Objekt ja doch kein String ist. Das gibt dann einen bösen Fehler.

Besser also immer toString() aufrufen.

Die Verwirrung wird vielleicht dadurch ausgelöst, dass beim Aneinanderhängen immer die toString- Methode eines Objektes aufgerufen wird.


----------



## BlueBook (17. Feb 2004)

danke für die Antwort


----------



## el_barto (17. Feb 2004)

ein weiterer unterschied:

```
String bla = object.toString(); // wirft NullPointer, wenn object null ist

String bla = (String) object; // weist bla null zu, falls object null ist
```


----------



## me.toString (18. Feb 2004)

Ein großer Vorteil der toString()-Methode ist, das sie automatisch aufgerufen wird, wenn man 

```
System.out.println( Object );
```
macht. Normaler weise wird die toString()-Methode von Object aufgerufen (da kommt aber nur Grütze raus) ... wenn du die Methode toString() schreibst (in dem Moment überschreibst du die Methode von Object, da alle klassen von
Object erben) und bei der Ausgabe in der Konsole wird deine Methode ausgeführt.


----------

