String in Java erzeugen

yxy

Lieutenant
Registriert
Juli 2014
Beiträge
570
Hallo,

ich kann ja wie folgt einen String erzeugen:

Code:
String operator = "q";
Der String ist doch nun genau 1 Char groß.
Warum kann ich dann sagen:
Code:
operator = "ABC";

Ich bin gerade etwas überrascht, dass das geht. In C würde sowas z.B. nie gehen, da ich bei der Definition des Strings eine feste Größe angeben muss. Spielt das in Java keine Rolle?
 
Spiel keine Rolle in Java.
 
Weil Strings auf dem Heap liegen und in deiner Variable operator auf dem Stack nur eine Referenz auf das String-Objekt im Heap gespeichert ist. Das "q" liegt nach der zweiten Zuweisung auch weiterhin auf dem Heap rum, es existiert nur keine Referenz darauf mehr. Der Garbage Collector räumt das "q" dann irgendwann weg.
 
statt = "q"; und = "ABC"; musst du dir vorstellen, dass du eigentlich new String("q"); und new String("ABC"); schreibst. Vllt mal dieses Kapitel bei Java ist auch eine Insel lesen.
 
yxy schrieb:
Ich bin gerade etwas überrascht, dass das geht. In C würde sowas z.B. nie gehen, da ich bei der Definition des Strings eine feste Größe angeben muss. Spielt das in Java keine Rolle?
Wo musst du den bei C eine feste Größe für einen String angeben?
Code:
const char* foobar = "Ich bin ein String";
 
in Java ist String eine eigenständige Klasse - wenn du also erst "q" schreibst und dann "ABC" dann weiß die Programmiersprache damit einfach automatisch umzugehen was speichertechnisch gemacht werden muss.

Bei C musst du dich selbst darum kümmern, was Java für dich macht
 
Zurück
Oben