Java String erzeugen

Gast #2597660
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 ?
Persönliche Seite
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";
Gast
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
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ß

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.