Есть ли разница между одинарными и двойными кавычками в Java?


101

Есть ли разница между одинарными и двойными кавычками в Java?

Ответы:


147

Используйте одинарные кавычки для литерала chars, двойные кавычки для литерала Strings, например:

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

Их нельзя использовать иначе (например, в Python).


10
И, конечно же, это поведение заимствовано из C (который, вероятно, получил его где-то еще, я полагаю).
JesperE

Для меня апострофы буквально автоматически приводятся intв таких контекстах. Так что этого не должно быть char. Оставить несколько голосов против ... упрощенно.
Hydroper

36

Символ - это один символ UTF-16, то есть буква, цифра, знак препинания, табуляция, пробел или что-то подобное.

Литерал char - это либо один символ, заключенный в одинарные кавычки, как это

char myCharacter = 'g'; 

или escape-последовательность, или даже escape-последовательность unicode:

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

Стоит отметить, что escape-последовательности Unicode обрабатываются очень рано во время компиляции, и поэтому использование '\ u00A' приведет к ошибке компилятора. Для специальных символов лучше использовать escape-последовательности, например «\ n» вместо «\ u00A».

Поскольку используются двойные кавычки String, вы должны использовать "escape-последовательность двойных кавычек" ( \") внутри строк, где в противном случае строка завершилась бы.
Например:

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

Необязательно экранировать двойные кавычки внутри одинарных кавычек.
Следующая строка допустима в Java:

char doublequote = '"';

12

Рассмотрим эти строки кода (Java):

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

1) Первая линия конкатенация Hи , Aчто приведет к HA(String буквального)

2) Во-вторых, мы добавляем значения двух символов, которые в соответствии с таблицей ASCII H= 72 и a= 97, что означает, что мы добавляем 72+97это как ('H'+'a').

3) Рассмотрим другой случай, когда у нас будет:

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

В этом случае мы имеем дело с конкатенацией String Aи char, Nчто приведет к AN.


4

Одиночная кавычка обозначает символ, а двойная кавычка обозначает строку.

char c = 'c';

'c' -----> c - это символ

Строка s = "stackoverflow";

"stackoverflow" ------> stackoverflow - это строка (т.е. коллекция символов)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.