Programmieren - alles kontrollieren 4.935 Themen, 20.621 Beiträge

JAVA: String: auf Heap oder auf Stack + konstant oder nicht ?

bitchen / 1 Antworten / Flachansicht Nickles

Hallo,
es gibt doch zwei Möglichkeiten einen String anzulegen:
- String a=new String("text");
- String b="text";


Sind diese Zuweisungen gleichbedeutend?
Es ist klar, dass a eine Referenz auf ein Objekt vom Typ String, das auf dem Heap angelegt wird, ist.
Aber was ist b? Wird bei der zweiten Zuweisung ein implizierter Befehl zum Anlegen eines neuen Objektes auf dem Heap ausgeführt, oder liegt b dann etwa auf dem Stack?


Noch ne Frage zu final bei Strings. Einerseits liest man immer, dass der Wert, also der Inhalt eines Strings konstant, d.h. unveränderlich ist, andererseits sind Strings ja auch Objekte, das heißt, dass nur die Referenz auf das Objekt nicht verändert werden kann, der Inhalt schon. In diesem Falle: Wozu ist dann noch der StringBuffer da, bei dem Zeichenketten geändert werden können?


Ich danke Euch im Vorraus für Eure Postings,
gruß,
Peter

bei Antwort benachrichtigen
Dreamforger bitchen „JAVA: String: auf Heap oder auf Stack + konstant oder nicht ?“
Optionen

- String a=new String("text");
- String b="text";
sind gleichbedeutend

unterschiede gibts erst wenn du variablen zuweist
String a = "text";
String b = a;
String c = new String(a);
Änderungen an b werden auch an dem als a bekannten Object gemacht da a und b auf dasselbe Object zeigen.
c dagegen ist isoliert und änderungen an c haben keinen Einfluß auf a und b

Die zweite Frage kann ich nicht beantworten. Ich schätze mal das es sich hauptsächlich um die interne Verwaltung der Zeichenkette handelt (festes Array verkettete Liste).

bei Antwort benachrichtigen