В Java, почему System.out.println(«» «); выдает » как вывод

#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

  1. " Вставьте символ двойной кавычки в текст на этом этапе.
  2. \ Вставьте символ обратной косой черты в текст на этом этапе.

Следуя приведенному выше описанию в нашем случае для System.out.println("" \") , " будет заменен символом двойной кавычки и \ будет заменен символом (одинарной обратной косой черты) .

Следовательно, выводимый вывод будет "

Надеюсь, это поможет.