Einzelzeichenfolge

7

Meine Meinung war bis heute, dass ein Literal wie "c" ein Objekt String erstellt. Heute habe ich gehört, dass Java kein Objekt für einzelne Zeichenfolgen erstellt. Ist das richtig? Wird dieses Literal als char gespeichert?

    
Tchypp 24.06.2011, 12:47
quelle

8 Antworten

13

Nein, es ist falsch. Sogar "" , erstellt ein String -Objekt. Wenn Sie jedoch 'c' eingeben, erhalten Sie ein char und nicht ein String -Objekt.

    
Giann 24.06.2011 12:49
quelle
8

"c" erstellt eine Zeichenfolge. 'c' erstellt ein Zeichen

    
Tom Squires 24.06.2011 12:49
quelle
6

Java erstellt eine Instanz einer Zeichenfolge sogar für eine einzelne Zeichenfolge. Die folgenden Ausdrucke java.lang.String :

%Vor%     
Jack Edmonds 24.06.2011 12:50
quelle
5

"c" ist ein String literal. Es repräsentiert String , genauso wie "foo" für String steht.

Es gibt keine spezielle Behandlung von Zeichen mit einem Zeichen String (nicht einmal von 0-Buchstaben String literal "" ).

Wer Ihnen gesagt hat, dass es anders behandelt wird, war entweder a.) falsch oder b.) Sprechen über etwas anderes (eine Bibliothek, die zum Beispiel eine spezielle Behandlung hat).

    
Joachim Sauer 24.06.2011 12:49
quelle
1

"c" erstellt ein Objekt. Wenn Sie das Literal jedoch irgendwo im Quellcode erneut zuweisen, wird kein neues Objekt erstellt, sondern auf das erste erstellte Zeichenfolgenobjekt verwiesen.

Zum Beispiel:

%Vor%

Sowohl s1 als auch s2 sind demselben Objekt zugewiesen, und == würde funktionieren.

Sie können hier mehr lesen: Ссылка

    
xkrz 24.06.2011 13:01
quelle
1

Vielleicht war gemeint, dass die unter der Haube Fliehgewichte erstellt werden (weiß nicht, wie das mit Java funktioniert, aber ich vermute, dass dieses Konzept auf einer gewissen Ebene für Strings eingesetzt wird)

    
Denis Biondic 24.06.2011 13:05
quelle
0

String speichert Zeichen als char[] , daher wird "c" höchstwahrscheinlich als new char[] { 'c' } im Objekt String dargestellt.

Da die String -Klasse final ist, bedeutet dies, dass es keine Unterklasse gibt, die Zeichenfolgen mit einem einzelnen Zeichen in einem char c -Feld speichert.

Außerdem gibt es kein Konzept zum automatischen Boxen / Unboxing für ein einzelnes Zeichen String bis char - soweit es dokumentiert ist, also kann man davon ausgehen, dass Single-Character-Strings ähnlich gespeichert werden jede andere Art von String.

    
Nick 24.06.2011 14:23
quelle
0

Wie bei den meisten Dingen in der Programmierung sehen Sie sich die Quelle an - & gt; java.lang.String.

Alle Strings sind Instanzen von java.lang.String, es gibt keinen speziellen Fall. Jeder java.lang.String enthält ein char [] und einige Ganzzahlen, die den Start- und Endindex enthalten. Beachten Sie, dass char [] zwischen Strign-Instanzen gemeinsam genutzt wird, zB wenn ein StringString () das ursprüngliche char [] nicht geklont oder kopiert wird, wird es geteilt, aber die Start- / Ende-Indizes werden aktualisiert.

    
mP. 30.06.2011 01:04
quelle

Tags und Links