Forum: PC-Programmierung Java String erzeugen


von Hans (Gast)


Lesenswert?

Hallo,

ich hätte eine Frage zum String erzeugen in Java.

Mein Code:

char[] cs = {'H','A','L','L','O'};

(1) String str1 = new String(cs);
(2) String str2 = String.valueOf(cs);

Stimmen meine Aussagen ?

zu (1) : hier wird ein neues String Objekt erzeugt, welches auf dem 
Objektheap abgelegt wird

Wird für jedes Element des char Arrays ein eigenes Objekt erzeugt und 
anschliessend zu einem neuen String Element zusammengesetzt ?

zu (2) : hier wird im Cache ein String Element erzeugt

Wie wird hier der str2 erzeugt ?

Und welche von diesen beiden Möglichkeiten sollte ich in meinem Code 
verwenden bzw. würdet ihr verwenden ?

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Hans schrieb:
> hier wird ein neues String Objekt erzeugt
Ja.

Hans schrieb:
> Wird für jedes Element ...
Siehe:
http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#String%28char[]%29

Hans schrieb:
> hier wird im Cache ein String Element erzeugt
Was für ein cache? Es kommt auf jedenfall nicht der String "Hallo" raus.

Hans schrieb:
> Und welche von diesen beiden Möglichkeiten sollte ich
> in meinem Code verwenden bzw. würdet ihr verwenden ?
Je nachdem was du vor hast garkeine. Einen String "erzeugt" man einfach 
indem man einer Stringvariablen ein Stringliteral zuweist also so:
1
String myString = "Hallo";

von Hans (Gast)


Lesenswert?

Ja das mit String = "Hallo"; wusste ich schon, jedoch ist dies nur ein 
Beispiel gewesen.

Ich mache nämlich ein Verschlüsselungsprogramm, dabei bekomme ich einen 
String nehme die einzelnen Zeichen und verändere sie --> anschliessend 
möchte ich aus dem char Feld wieder einen String erzeugen und ich würde 
gerne wissen, welche dieser beiden Methoden verwendet werden sollte.

        char[] test = {'H','a','l'};
        String str = String.valueOf(test);
        System.out.println(str);

--> dies funktioniert bei mir schon

von Arc N. (arc)


Lesenswert?


von Hans (Gast)


Lesenswert?

Danke für die Antworten !

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

In dem Fall würde ich den ersten "Weg" nehmen der Zweite hat den 
Nachteil falls du mal den Datentyp änderst nicht unbedingt einen 
Compilefehler erhältst da valueOf noch eine Menge anderer Typen 
akzeptiert.

von Markus M. (mark_m)


Lesenswert?

Eine String-Objekt ist nicht dynamisch. Bei jeder Änderung wird immer 
eine neue Kopie des Objekts erzeugt. Bei vielen Manipulationen geht das 
auf Kosten von Programmspeicher und Laufzeit.

Wenn Du intensive Strings manipulieren möchtest, würde ich dir empfehlen 
auf die Klasse StingBuilder auszuweichen.

Gruß

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.