Jan 05

… aber man kann doch an einen String etwas dran hängen, oder? … fragt sich vielleicht der eine oder andere. Die Antwort ist: nicht wirklich. Sehen wir uns erst einmal ein Beispiel an:

String a = “abc”;
a.concat(“123″);
// “Anhängen” von def an abc
System.out.println(a); // Ausgabe: abc

Ihr seht, noch nicht einmal das Anhängen klappt wirklich. Hierfür muss explizit ein neuer String definiert werden:

String b =a.concat(“def”);
System.out.println(b);
// nun ist die Ausgabe: abcdef

Ihr seht, es geht nichts ohne ein neues String-Objekt. Aber was ist nun bei a.concat(“123″) passiert?

Das Objekt wurde angelegt, ist aber (da nicht referenziert) auch nicht erreichbar.

Tagged with:
Jan 03

Strings können nicht verändert werden. Der ein oder andere mag jetzt etwas verwirrt sein und sich fragen, ob ich es ernst meine; ja dies ist eine Tatsache.

Komisch, ich kann doch z.B. einem String einen neuen Wert zuweisen:

String a = “abc”;
a =”def”;
// neuer Wert von String “def”

Es bleibt also die Frage, warum denn Strings unveränderlich sein sollen, wenn man doch gerade gezeigt hat, das dies nicht so ist.

Sie sind unveränderlich, können aber (nur von außen gesehen) einen anderen Wert annehmen, in dem ein neuer String angelegt wird. Schauen wir uns mal unser Beispiel etwas genauer an:

String a = “abc”; // Anlage eines String-Objektes “abc” auf das a zeigt
a =”def”; // Anlage eines neuen String-Objektes “def”. A zeigt nun nicht mehr auf “abc” sondern auf “def”

Es wird also für jede “Veränderung” eines Strings ein neues Objekt angelegt, auf das dann referenziert wird. Das alte Objekt ist nun nicht mehr erreichbar.

Tagged with:
preload preload preload
http://www.wikio.de Blog Top Liste - by TopBlogs.de Blogverzeichnis - Blog Verzeichnis bloggerei.de Bloggeramt.de Software
Webbhotell Top Blogs