¿Hay alguna diferencia entre las comillas simples y dobles en Java?

101

¿Hay alguna diferencia entre las comillas simples y dobles en Java?

pupeño
fuente

Respuestas:

146

Use comillas simples para chars literales , comillas dobles para Strings literales , así:

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

No se pueden usar de otra manera (como en Python, por ejemplo).

Yuval Adam
fuente
10
Y, por supuesto, este comportamiento está tomado de C (que probablemente lo obtuvo en otro lugar, supongo).
JesperE
Para mí, los apóstrofos literalmente se transmiten automáticamente inten tales contextos. Entonces no tiene por qué ser así char. Merecen algunos votos negativos ... simplista.
Hydroper
36

Un char es un solo carácter UTF-16, es decir, una letra, un dígito, un signo de puntuación, una tabulación, un espacio o algo similar.

Un literal char es un carácter único encerrado entre comillas simples como esta

char myCharacter = 'g'; 

o una secuencia de escape, o incluso una secuencia de escape Unicode:

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

Vale la pena señalar que las secuencias de escape Unicode se procesan muy temprano durante la compilación y, por lo tanto, el uso de '\ u00A' conducirá a un error del compilador. Para símbolos especiales, es mejor usar secuencias de escape, es decir, '\ n' en lugar de '\ u00A'.

Siendo las comillas dobles para String, debe utilizar una "secuencia de escape de comillas dobles" ( \") dentro de las cadenas donde de otra manera terminaría la cadena.
Por ejemplo:

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

No es necesario escapar de las comillas dobles dentro de las comillas simples.
La siguiente línea es legal en Java:

char doublequote = '"';
VonC
fuente
12

Consideremos estas líneas de códigos (Java):

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

1) La primera línea es la concatenación de Hy Aeso dará como resultado HA(String literal)

2) En segundo lugar, estamos agregando los valores de dos caracteres que de acuerdo con la tabla ASCII H= 72 y a= 97, eso significa que estamos agregando 72+97como ('H'+'a').

3) Consideremos otro caso en el que tendríamos:

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

En este caso, estamos tratando con la concatenación de String Ay char Nque dará como resultado AN.

Eddy Bayona
fuente
4

La comilla simple indica carácter y la comilla doble indica cadena.

char c = 'c';

'c' -----> c es un carácter

String s = "stackoverflow";

"stackoverflow" ------> stackoverflow es una cadena (es decir, colección si caracteres)

Horse_1995
fuente