Existe uma diferença entre aspas simples e duplas em Java?

101

Existe uma diferença entre aspas simples e duplas em Java?

pupeno
fonte

Respostas:

146

Use aspas simples para chars literais , aspas duplas para Strings literais , assim:

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

Eles não podem ser usados ​​de outra forma (como em Python, por exemplo).

Yuval Adam
fonte
10
E, é claro, esse comportamento é emprestado de C (que provavelmente o pegou em outro lugar, eu presumo).
JesperE
Para mim, apóstrofos literais lançados automaticamente intem tais contextos. Portanto, não precisa ser assim char. Merece alguns votos negativos ... simplista.
Hydroper
36

Um char é um único caractere UTF-16, que é uma letra, um dígito, um sinal de pontuação, uma tabulação, um espaço ou algo semelhante.

Um literal de char é um único caractere entre aspas simples como este

char myCharacter = 'g'; 

ou uma sequência de escape, ou mesmo uma sequência de escape unicode:

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

É importante notar que as sequências de escape Unicode são processadas muito cedo durante a compilação e, portanto, usar '\ u00A' levará a um erro do compilador. Para símbolos especiais, é melhor usar sequências de escape, ou seja, '\ n' em vez de '\ u00A'.

Sendo aspas duplas String, você deve usar uma "seqüência de escape de aspas duplas" ( \") dentro das strings onde, de outra forma, terminaria a string.
Por exemplo:

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

Não é necessário escapar as aspas duplas entre aspas simples.
A seguinte linha é válida em Java:

char doublequote = '"';
VonC
fonte
12

Vamos considerar estas linhas de código (Java):

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

1) A primeira linha é a concatenação de He Aisso resultará em HA(literal de string)

2) Em segundo lugar, estamos adicionando os valores de dois caracteres que de acordo com a Tabela ASCII H= 72 e a= 97 isso significa que estamos adicionando 72+97como ('H'+'a').

3) Vamos considerar outro caso em que teríamos:

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

Neste caso, estamos lidando com a concatenação de String Ae char Nque resultará em AN.

Eddy Bayonne
fonte
4

Aspas simples indicam caracteres e aspas duplas indicam string.

char c = 'c';

'c' -----> c é um caractere

String s = "stackoverflow";

"stackoverflow" ------> stackoverflow é uma string (ou seja, coleção de caracteres)

Horse_1995
fonte