Gibt es in Java einen Unterschied zwischen einfachen und doppelten Anführungszeichen?

101

Gibt es in Java einen Unterschied zwischen einfachen und doppelten Anführungszeichen?

pupeno
quelle

Antworten:

146

Verwenden Sie einfache Anführungszeichen für Literale charund doppelte Anführungszeichen für Literale Stringwie folgt:

char c = 'a';
String s = "hello";

Sie können nicht anders herum verwendet werden (wie zum Beispiel in Python).

Yuval Adam
quelle
10
Und natürlich ist dieses Verhalten von C entlehnt (was es wahrscheinlich woanders bekommen hat, nehme ich an).
JesperE
Für mich werden Apostrophe intin solchen Kontexten automatisch verwendet . Also muss es nicht sein char. Verdiene ein paar Downvotes ... simpel.
Hydroper
36

Ein Zeichen ist ein einzelnes UTF-16-Zeichen, dh ein Buchstabe, eine Ziffer, ein Interpunktionszeichen, ein Tabulator, ein Leerzeichen oder ähnliches.

Ein Zeichenliteral ist entweder ein einzelnes Zeichen, das in solchen einfachen Anführungszeichen eingeschlossen ist

char myCharacter = 'g'; 

oder eine Escape-Sequenz oder sogar eine Unicode-Escape-Sequenz:

char a = '\t';    // Escape sequence: tab
char b = '\177'   // Escape sequence, octal.
char c = '\u03a9' // Unicode escape sequence. 

Es ist anzumerken, dass Unicode-Escape-Sequenzen sehr früh während der Kompilierung verarbeitet werden und daher die Verwendung von '\ u00A' zu einem Compilerfehler führt. Für spezielle Symbole ist es besser, Escape-Sequenzen zu verwenden, dh '\ n' anstelle von '\ u00A'.

Da doppelte Anführungszeichen für verwendet werden String, müssen Sie eine "doppelte Anführungszeichen-Escape-Sequenz" ( \") in Zeichenfolgen verwenden, an der die Zeichenfolge sonst beendet würde.
Zum Beispiel:

System.out.println("And then Jim said, \"Who's at the door?\"");

Es ist nicht erforderlich, das doppelte Anführungszeichen in einfache Anführungszeichen zu setzen.
Die folgende Zeile ist in Java legal:

char doublequote = '"';
VonC
quelle
12

Betrachten wir diese Codezeilen (Java):

System.out.println("H"+"A"); //HA
System.out.println('H'+'a'); //169

1) Die erste Zeile ist die Verkettung von Hund Adas führt zu HA(String-Literal)

2) Zweitens addieren wir die Werte von zwei Zeichen, die gemäß der ASCII-Tabelle H= 72 und a= 97 bedeuten, dass wir hinzufügen, dass 72+97es so ist ('H'+'a').

3) Betrachten wir einen anderen Fall, in dem wir hätten:

System.out.println("A"+'N');//AN

In diesem Fall haben wir es mit der Verkettung von String zu tun A und char zuN , die dazu führen wird AN.

Eddy Bayonne
quelle
4

Einfaches Anführungszeichen kennzeichnet Zeichen und doppeltes Anführungszeichen kennzeichnet Zeichenfolge.

char c = 'c';

'c' -----> c ist ein Zeichen

String s = "Stackoverflow";

"stackoverflow" ------> stackoverflow ist eine Zeichenfolge (dh Sammlung, wenn Zeichen)

Pferd_1995
quelle