#java
#java
Вопрос:
В Java при запуске System.out.println("" \");
я получаю вывод в виде :
»
Не могли бы вы подробно объяснить, почему это происходит?
Комментарии:
1. — это escape-символ. Это означает, что следующий символ воспринимается буквально, а не как синтаксис Java. Если вы удалите внешние кавычки и s, которые у вас есть
"
внутри строки.
Ответ №1:
Потому что вы экранируете двойные кавычки ( ""
) с обратной косой чертой (
), а также обратную косую черту с обратной косой чертой.
Ответ №2:
backslash
это специальный символ в JAVA и многих других языках программирования, одним из его применений является экранирование символов в определенной ситуации.
Например:
Если вы хотите напечатать строку, содержащую двойные кавычки, например: How are you "Bob" ?
Печать этого с помощью System.out.println("How are you "Bob" ?");
не будет работать, потому что вы закрываете кавычки непосредственно перед словом Bob
. Поэтому для решения такой ситуации использовался символ, чтобы можно было печатать двойные кавычки внутри строки:
System.out.println("How are you "Bob" ?");
Более того, поскольку мы договорились выше, что
экранирует двойные кавычки, если вы хотите напечатать сингл backslash
внутри строки, выполнение этого System.out.println("");
откроет строку, но экранирует вторые двойные кавычки, что приведет к ошибке, поскольку строка не была закрыта. Чтобы исправить это, вам нужно экранировать backslash
вот так: System.out.println(«»);
Другие интересные применения
:
n
символ для возврата к новой строке
t
символ для вставки табуляции
Подробнее о escape-символе можно найти в Википедии
Ответ №3:
System.out.println("" ");
System.out.println(" --> String Open
" --> Double Quote character escaped using backslash
\ --> Backslash itself as a character escaped using backslash
"); --> String Close
выдаст вам вывод в виде "
Список экранированных символов вы можете найти здесь .
t
Вставьте табуляцию в текст на этом этапе.b
Вставьте пробел в текст на этом этапе.n
Вставьте новую строку в текст на этом этапе.r
Вставьте возврат каретки в текст на этом этапе.f
Вставьте formfeed в текст на этом этапе.'
Вставьте символ одинарной кавычки в текст на этом этапе."
Вставьте символ двойной кавычки в текст на этом этапе.\
Вставьте символ обратной косой черты в текст на этом этапе.
Ответ №4:
ДА. Вы экранируете два символа,
String s = "" \";
использует единственную обратную косую черту для экранирования сначала двойной кавычки, а затем обратной косой черты. Итак, вы получаете,
"
Вы также можете попробовать
System.out.println(s.length());
Что скажет вам «3». Потому что у вас есть строка из ‘»‘, ‘ ‘ и »
Escape-последовательности объясняются в Java Tutorial: Characters, который также допускает символы Unicode,
System.out.println("u03A9");
Выведет строку из одного символа, которая равна
Ω
Ответ №5:
В дополнение к комментариям моих предшественников, вы можете проверить это в руководстве Oracle по Java, список escape-последовательностей.
http://docs.oracle.com/javase/tutorial/java/data/characters.html
Ответ №6:
Это потому, что, когда вы ставите a
перед специальным символом в java,
сообщает JVM
, что это не специальный символ, а скорее часть строки. Итак, в вашем случае, когда вы ставите
перед "
, он печатает double quote(")
, а когда вы снова ставите \
, он печатает a slash ()
. Если вы хотите узнать больше об этом, вы можете изучить внутреннюю часть Java и то, как обрабатываются специальные символы в java.
Надеюсь, это поможет.
Ответ №7:
Они называются escape-последовательностями. Все escape-последовательности начинаются с символа (обратная косая черта) (например, n, t и т. Д.). Здесь n, t имеет особое значение для Java, как разрыв строки и пробел табуляции соответственно. Аналогично » (двойная кавычка) имеет особое значение, говоря, что завершение строковых литералов в Java. Вместо того, чтобы создавать » в качестве строкового литерала-терминатора, нам нужно сообщить компилятору Java, чтобы он обрабатывал его как специальную последовательность. Следовательно, мы используем эти escape-последовательности, такие как \ (для обратной косой черты), ‘ (одинарная кавычка), r (возврат каретки) и т.д.,
Спасибо, JK
Ответ №8:
Стандартное определение в соответствии с oracle выглядит следующим образом: символ, которому предшествует обратная косая
черта, является escape-последовательностью и имеет особое значение для компилятора.В следующей таблице показаны escape-последовательности Java
Описание EscapeSequence
"
Вставьте символ двойной кавычки в текст на этом этапе.\
Вставьте символ обратной косой черты в текст на этом этапе.
Следуя приведенному выше описанию в нашем случае для System.out.println("" \")
, "
будет заменен символом двойной кавычки и \
будет заменен символом (одинарной обратной косой черты)
.
Следовательно, выводимый вывод будет "
Надеюсь, это поможет.