Нет абсолютно никакой разницы. Два char
являются ==
.
System.out.println('\"' == '"'); // prints "true"
Строго говоря, нет необходимости избегать двойной кавычки в литерале char
, но это не меняет того факта, что \"
обозначает символ двойной кавычки \u0022
.
Ссылки
String
аналог
У нас также есть аналогичная ситуация для String
литералов:
System.out.println("\'".equals("'")); // prints "true"
На самом деле, мы даже можем пойти дальше и использовать ==
для справочного равенства:
System.out.println("\'" == "'"); // prints "true"
Второй фрагмент доказывает, что два строковых литерала действительно равны и, следовательно, подвергаются интернированию строк во время компиляции.
Ссылки
- JLS 3.10.5 Строковые литералы
Строковые литералы - или, в более общем смысле, строки, являющиеся значениями константных выражений - "интернированы" для совместного использования уникальных экземпляров с использованием метода String.intern
.
Похожие вопросы
Резюме
- Одна кавычка в
char
буквальном ДОЛЖНА быть экранированной
- Потому что
char
литерал заключен в одинарные кавычки
- Двойная кавычка в
String
буквальном ДОЛЖНА быть экранированной
- Потому что
String
литерал заключен в двойные кавычки
- Бежать не повредит, даже если в этом нет необходимости
- Идите с тем, что наиболее читабельно