web-dev-qa-db-fra.com

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

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

93
pupeno

Utilisez des guillemets simples pour le littéral chars, des guillemets doubles pour le littéral Strings, comme ceci:

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

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

135
Yuval Adam

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 littéral de caractère est soit un seul caractère entre 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 convient de noter que les séquences d'échappement Unicode sont traitées très tôt pendant la compilation et donc l'utilisation de '\ u00A' entraînera une erreur de compilation. 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 des guillemets doubles" (\") à l'intérieur de chaînes où cela finirait 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 entre guillemets simples.
La ligne suivante est légale en Java:

char doublequote = '"';
35
VonC

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 H et A qui se traduira par HA (chaîne littérale)

2) Deuxièmement, nous ajoutons les valeurs de deux caractères qui, selon le ASCII Table H = 72 et a = 97, cela signifie que nous ajoutons 72+97 c'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 à la concaténation de String A et char N qui se traduira par AN.

10
Eddy Bayonne

Un guillemet simple indique un caractère et un guillemet double indique une chaîne.

char c = 'c';

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

String s = "stackoverflow";

"stackoverflow" ------> stackoverflow est une chaîne (c'est-à-dire collection si caractères)

4
Horse_1995