How-Do/Kann ich den Wert eines String-Objekts in Java festlegen (ohne ein neues String-Objekt zu erstellen)?Kann ich den Wert eines Strings in Java ohne Verwendung eines Konstruktors festlegen?
Antwort
Es gibt keine "set" Methoden auf String
. Strings sind immutable in Java. Um den Wert einer String
Variablen zu ändern, müssen Sie der Variablen einen anderen String zuweisen. Sie können die vorhandene Zeichenfolge nicht ändern.
(ohne ein neues String-Objekt erstellen)
zuordnen schafft keine neuen Objekt - es kopiert die Referenz. Beachten Sie, dass selbst wenn Sie schreiben etwas wie folgt aus:
s = "hello";
es wird nicht ein neues String-Objekt jedes Mal schaffen es ausgeführt wird. Das String-Objekt wird aus dem String-Pool kommen.
Die Zeichenfolgen sind unveränderlich, so dass Sie den Wert einer bereits erstellten Zeichenfolge nicht ändern können.
Eigentlich gibt es keine Möglichkeit, das in Java zu tun, die String-Objekte sind standardmäßig unveränderlich.
In der Tat, das ist einer der Gründe, warum die Verwendung der "+"
Verkettung Operator wie "str1" + "str2"
schrecklich ineffizient ist, denn was es tut, ist jede Zeichenfolge kopieren, um eine dritte zu erzeugen.
Je nach Bedarf sollten Sie prüfen, StringBuilder
Verwendung Es hängt ein wenig von Ihrer Definition des Objekts. Wenn Sie die Referenz meinen, nein. Eine Referenz wird immer erstellt. Wenn du den von den Charakteren benutzten Speicher meinst, sicher.
Strings werden (wenn möglich) interniert was bedeutet, dass in einer Zuordnungs:
String s1 = "Hello";
String s2 = "Hello";
es 2 Referenzen (Zeiger auf eine Speicherstelle) sind, aber Hello
ist auf nur 1 Platz im Speicher. Dies ist einer der Gründe, warum Strings nicht geändert werden können.
Sicher können Sie das interne Char-Array über Reflexion zugreifen. Aber es ist normalerweise eine schlechte Idee, dies zu tun. Mehr unter http://www.eclipsezone.com/eclipse/forums/t16714.html.
Das String-Objekt ist in Java unveränderlich, so dass alle Änderungen ein neues String-Objekt erstellen. Verwenden Sie einen StringBuilder, wenn Sie Änderungen an einem stringartigen Objekt vornehmen möchten, ohne neue Objekte zu erstellen. Als Bonus können Sie mit dem StringBuilder zusätzlichen Speicher vorbelegen, wenn Sie etwas über die mögliche Länge Ihrer Zeichenfolge wissen.
Ich bin über diese Frage gestolpert, weil ich eine Zeichenfolge in einem "umschließenden Typ" festlegen muss - einem anonymen Typ. Aber alle Variablen, die ich innen setzen und verwenden möchte, müssen endgültig sein.
Die einfache Lösung ist verwenden StringBuilder - es ist eine veränderbare String.
- 1. Vorteile der Verwendung eines Konstruktors?
- 2. Wie kann ich den Wert eines Textfelds in Dart festlegen?
- 3. Großbuchstaben eines Strings [] Wert in Java (Android)
- 4. Kann ich den Wert eines Attributnamens mit Xpath festlegen?
- 5. Private Variablen innerhalb eines Konstruktors in Java
- 6. Den Wert eines Index eines Zeichenfolgenarrays mithilfe eines "foreach" -Ansatzes auf den Wert eines Elements in einem Enumerable-Array festlegen.
- 7. Wie kann ich den Wert eines Parameters innerhalb eines Objekts festlegen?
- 8. Wie bestimmt DevTools den Namen eines Konstruktors eines Objekts?
- 9. Argument eines parametrisierten Konstruktors
- 10. In Symfony, wie den Wert eines Formularfelds festlegen?
- 11. Wie ermittle ich den Zeichensatz eines Strings?
- 12. Wie kann ich den Standardstatus eines UISegmentedControls festlegen?
- 13. Wie erhalte ich den Wert eines Nachkommenelements?
- 14. Wie kann ich den Hintergrund eines Gitters festlegen?
- 15. Ersetzen Sie den ersten Buchstaben eines Strings in Java?
- 16. Wie entferne ich den ersten Teil eines Strings in bash?
- 17. Aufruf eines Konstruktors als Methode
- 18. Erhöhen Sie den int-Wert eines Ganzzahlwerts?
- 19. Wie kann ich Browseraktionen ohne Verwendung eines Plugins programmatisch aufzeichnen?
- 20. Wie ändere ich den Wert eines Zend_Form_Element_Submit
- 21. Umgekehrte Wortreihenfolge eines Strings ohne str.split() erlaubt
- 22. Berechnen Sie die Anzeigebreite eines Strings in Java
- 23. Wie Sie den Wert eines FormView-Textfelds auf den Wert eines HiddenField in einem ASP.net festlegen C# WebForms-Anwendung
- 24. Wie finde ich den richtigen Datentyp zum Konvertieren eines Strings?
- 25. Ausspionieren eines Konstruktors in JavaScript mit Sinon
- 26. Kann eine Schnittstelle die Signatur eines C# -Konstruktors definieren
- 27. Attribut ohne Wert festlegen
- 28. Wie bekomme ich den Wert eines DynamicControl?
- 29. Wie kann ich toLowerCase() nach der Verwendung eines StringBuffer verwenden?
- 30. Wie rufe ich einen Superkonstruktor außerhalb eines Konstruktors auf?
Es ist ** immer ** eine schlechte Idee. Wenn Sie veränderbare Zeichenfolgen benötigen, verwenden Sie stattdessen 'StringBuilder'-Instanzen. –