Rätsel
-
Umfrage: Wieviel char-Arrays werden hier erzeugt?
Auswahl Stimmen Prozent 3 3 20.0% 4 1 6.7% 6 0 0.0% 9 4 26.7% 11 7 46.7% String command = "mark $xa9ß76435!"; command = command.toUpperCase().trim(); if( command.startsWith("MARK") ) { String temp = new String( command.substring( "mark".length()).trim() ); String substr = temp.substring( command.indexOf('R')).toString().trim().substring(temp.indexOf("9SS") ); }Jetzt müsste man wissen, wie java.lang.String funktioniert.

Gibt nen Keks zu gewinnen.
-
Hiermit muss ich leider verkünden, dass die Lösung dieses Rätsels offenbar implementierungsabhängig ist. Laut einem schlauen Java-Buch, wird bei substring() das Array nicht kopiert, sondern der neue String referenziert das alte Array, was ja problemlos geht, weil Strings immutable sind. Damit wäre die Lösung 3 gewesen. (Je 1 für command = ..., toUpperCase(), new String() )
Jetzt habe ich aber mal den Quellcode von String angeschaut und was sehe ich? System.arraycopy(), System.arraycopy(), ...
Eigentlich ziemlich schlecht gemacht.
-
Entschuldige meine Begriffsstutzigkeit, aber wo soll da überhaupt ein char-Array herkommen?
Wenn mir in der entsprechenden Vorlesung kein Mist erzählt wurde, dann haben Java-Strings intern nichts mit char-Arrays zu tun. Also wird auch durch wildes Rumschnipseln keins angelegt. Ein Aufruf von toCharArray() kann ich auch nicht entdecken ...
-
Doch, Strings verwalten natürlich ein char-Array.
Es wird nur immer sehr darauf geachtet, zu Unterscheiden zwischen char-Array und String, da Strings immutable sind.
-
Danke für die Aufklärung.
(
Vielleicht sollte ich Sätze in Zukunft zu Ende lesen.
Skript schrieb:
Insbesondere sind Strings, obwohl sie im Deutschen als
"Zeichenkette" bezeichnet werden, keine Folgen (oder Felder,
Arrays) von Zeichen (char), die einzeln modifiziert werden können
(anders als zum Beispiel in C/C++!))