Y a-t-il une différence entre les guillemets simples et doubles en Java?

101

Y a-t-il une différence entre les guillemets simples et doubles en Java?

pupeno
la source

Réponses:

146

Utilisez des guillemets simples pour les littéraux chars, des guillemets doubles pour les littéraux Strings, comme ceci:

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

Ils ne peuvent pas être utilisés autrement (comme en Python, par exemple).

Yuval Adam
la source
10
Et, bien sûr, ce comportement est emprunté à C (qui l'a probablement obtenu ailleurs, je suppose).
JesperE
Pour moi, les apostrophes littérales sont automatiquement converties intdans de tels contextes. Cela n'a donc pas besoin de l'être char. Méritant des votes négatifs ... simpliste.
Hydroper
36

Un caractère est un seul caractère UTF-16, c'est-à-dire une lettre, un chiffre, un signe de ponctuation, une tabulation, un espace ou quelque chose de similaire.

Un char littéral est soit un seul caractère entouré de guillemets simples comme celui-ci

char myCharacter = 'g'; 

ou une séquence d'échappement, ou même une séquence d'échappement unicode:

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

Il est à noter que les séquences d'échappement Unicode sont traitées très tôt lors de la compilation et que l'utilisation de '\ u00A' entraînera donc une erreur du compilateur. Pour les symboles spéciaux, il est préférable d'utiliser des séquences d'échappement à la place, c'est-à-dire '\ n' au lieu de '\ u00A'.

Les guillemets doubles étant pour String, vous devez utiliser une «séquence d'échappement de guillemets doubles» ( \") à l'intérieur des chaînes où elle terminerait autrement la chaîne.
Par exemple:

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

Il n'est pas nécessaire d'échapper aux guillemets doubles dans les guillemets simples.
La ligne suivante est légale en Java:

char doublequote = '"';
VonC
la source
12

Considérons ces lignes de codes (Java):

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

1) La première ligne est la concaténation de Het Aqui se traduira par HA(String literal)

2) Deuxièmement, nous ajoutons les valeurs de deux caractères qui, selon le tableau ASCII H= 72 et a= 97, cela signifie que nous ajoutons 72+97c'est comme ('H'+'a').

3) Considérons un autre cas où nous aurions:

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

Dans ce cas, nous avons affaire à une concaténation de String Aet de char Nqui aboutira à AN.

Eddy Bayonne
la source
4

Les guillemets simples indiquent un caractère et les guillemets doubles indiquent une chaîne.

char c = 'c';

'c' -----> c est un caractère

String s = "stackoverflow";

"stackoverflow" ------> stackoverflow est une chaîne (ie collection si caractères)

Cheval_1995
la source