Есть ли разница между одиночными и двойными кавычками в Java?
Есть ли разница между одиночными и двойными кавычками в Java?
Ответ 1
Используйте одинарные кавычки для литерала char
s, двойные кавычки для литерала String
s, например:
char c = 'a';
String s = "hello";
Они не могут использоваться каким-либо другим способом (например, в Python).
Ответ 2
A char - это один символ UTF-16, то есть буква, цифра, знак препинания, вкладка, пробел или что-то подобное.
A char literal - либо один символ, заключенный в одиночные кавычки, такие как
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 at the door?\"");
Нет необходимости избегать двойной кавычки внутри одинарных кавычек.
Следующая строка является законной в Java:
char doublequote = '"';
Ответ 3
Рассмотрим эти строки кодов (Java):
System.out.println("H"+"A"); //HA
System.out.println('H'+'a'); //169
1) Первая строка - это конкатенация H
и A
, которая приведет к HA
(строковый литерал)
2) Во-вторых, мы добавляем значения двух char, которые в соответствии с таблицей 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 - символ
String s = "stackoverflow";
"stackoverflow" ------ > stackoverflow - это строка (например, коллекция, если символы)