C'è una differenza tra virgolette singole e doppie in Java?


101

C'è una differenza tra virgolette singole e doppie in Java?

Risposte:


146

Usa virgolette singole per chars letterali , virgolette doppie per Strings letterali , in questo modo:

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

Non possono essere usati in nessun altro modo (come in Python, per esempio).


10
E, naturalmente, questo comportamento è preso in prestito da C (che probabilmente lo ha ottenuto da qualche altra parte, presumo).
JesperE

Per me, apostrofi letterali espressi automaticamente intin tali contesti. Quindi non è necessario char. Meritevole di alcuni voti negativi ... semplicistico.
Hydroper

36

Un carattere è un singolo carattere UTF-16, ovvero una lettera, una cifra, un segno di punteggiatura, una tabulazione, uno spazio o qualcosa di simile.

Un letterale char è un singolo carattere racchiuso tra virgolette singole come questa

char myCharacter = 'g'; 

o una sequenza di escape, o anche una sequenza di escape Unicode:

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

Vale la pena notare che le sequenze di escape Unicode vengono elaborate molto presto durante la compilazione e quindi l'utilizzo di "\ u00A" porterà a un errore del compilatore. Per i simboli speciali è meglio usare invece sequenze di escape, cioè "\ n" invece di "\ u00A".

Essendo le virgolette doppie String, è necessario utilizzare una "sequenza di escape di virgolette doppie" ( \") all'interno di stringhe dove altrimenti terminerebbe la stringa.
Per esempio:

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

Non è necessario sfuggire alle virgolette doppie all'interno di virgolette singole.
La riga seguente è legale in Java:

char doublequote = '"';

12

Consideriamo queste righe di codice (Java):

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

1) La prima riga è la concatenazione di He Ache risulterà in HA(String literal)

2) In secondo luogo stiamo aggiungendo i valori di due caratteri che secondo la tabella ASCII H= 72 e a= 97 significa che stiamo aggiungendo 72+97è come ('H'+'a').

3) Consideriamo un altro caso in cui avremmo:

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

In questo caso abbiamo a che fare con la concatenazione di String Ae char Nche risulterà in AN.


4

Le virgolette singole indicano il carattere e le virgolette doppie indicano la stringa.

char c = 'c';

'c' -----> c è un carattere

String s = "stackoverflow";

"stackoverflow" ------> stackoverflow è una stringa (cioè raccolta se caratteri)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.