Чи є різниця між одинарними та подвійними лапками на Java?


101

Чи є різниця між одинарними та подвійними лапками на Java?

Відповіді:


146

Використовуйте одинарні лапки для літералу chars, подвійні лапки для literal Strings, наприклад:

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

Їх не можна використовувати навпаки (наприклад, у Python).


10
І, звичайно, така поведінка запозичена у С (який, мабуть, отримав десь ще, я припускаю).
JesperE

Для мене апострофи буквально автоматично вказуються intв такі контексти. Тож цього не потрібно char. Заслуговуючи деякі низовини ... спрощено.
Hydroper

36

Значок - це один символ UTF-16, тобто літера, цифра, розділовий знак, вкладка, пробіл чи щось подібне.

Знаковий буквар - це або один символ, укладений у подібні позначки цитата

char myCharacter = 'g'; 

або послідовність виходу, або навіть послідовність виходу з унікоду:

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

Варто відзначити, що послідовності виходу Unicode обробляються дуже рано під час компіляції, а отже, використання "\ u00A" призведе до помилки компілятора. Для спеціальних символів краще використовувати послідовності втечі, тобто "\ n" замість "\ u00A".

Для подвійних лапок String, ви повинні використовувати "подвійну послідовність втечі цитати" ( \") всередині рядків, де вона інакше завершить рядок.
Наприклад:

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.