Является ли символ "\" "таким же, как" "? - PullRequest
2 голосов
/ 11 июля 2010

Есть ли разница между char литералами '\"' и '"'?

1 Ответ

9 голосов
/ 11 июля 2010

Нет абсолютно никакой разницы. Два 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 литерал заключен в двойные кавычки
  • Бежать не повредит, даже если в этом нет необходимости
    • Идите с тем, что наиболее читабельно
...