Erste Schritte Unterschiede bei der Deklaration von Strings

Berg

Mitglied
Liebe Forenmitglieder
...wieder eine Anfängerfrage mit der Bitte um Unterstützung....

Strings kann man auf folgende zwei Arten deklarieren:

Java:
String c = "Test";			//Variante 1 
String e = new String ("Toast");	//Variante 2 - wann deklariert man einen String so wie hier, wann so wie oben?

In der zweiten Variante wird ein Objekt der Klasse String erzeugt, auf das man dann u.a. die Methoden equals, length, etc. anwenden kann.
>>> Was wird denn in der ersten Variante erzugt, sprich wie heißt das?
Aber auch bei der ersten Variante können die Methoden der Klasse String angewendet werden.

>>> Wann nutzt man denn die eine Variante, wann die andere?
>>> Wie heißen denn hier die Fachbegriffe nach denen ich suchen muss?

Vielen Dank & viele Grüße
Berg
 
Man nutzt immer die erste Variante (die eine unnötige Objekterzeugung vermeidet), ausgenommen in einem seltenen und zugegebenermaßen obskuren Spezialfall:

Angenommen, du hast irgendwoher einen zehn Kilometer langen String und schreibst [c]String s = zehnKilometerLangerString.substring(3,5);[/c]. Dann teilen sich beide Strings ihr internes char-Array, d.h. [c]zehnKilometerLangerString[/c] kann nicht garbage-collected werden, solange du [c]s[/c] noch irgendwo referenzierst. In diesem Fall wäre es sinnvoll, dass beide Strings wirklich unabhängig voneienander sind, also [c]String s = new String(zehnKilometerLangerString.substring(3,5));[/c]. In der Praxis sollte das nicht allzu häufig vorkommen.

Theoretisch könnte der zweite Fall noch wichtig sein, wenn man z.B. eine [c]IdentityHashMap[/c] nutzt, und möchte, dass sich zwei "inhaltlich" gleiche Strings als Schlüssel unterscheiden, aber wer so etwas macht, frisst auch kleine Kinder.
 

Zurück
Oben