Как вывести кавычки в java
Перейти к содержимому

Как вывести кавычки в java

  • автор:

Строки — Основы Java

Какие из этих пяти вариантов — строки? С первыми двумя все понятно: это точно строки, мы уже работали с подобными конструкциями. А что насчет остальных?

Любой одиночный символ в кавычках — это строка. Пустая строка «» — это тоже строка. То есть строкой мы считаем все, что находится внутри кавычек, даже если это пробел, один символ или вообще отсутствие символов.

Представьте, что вы хотите напечатать строчку dragon’s mother. Апостроф перед буквой s — это такой же символ, как одинарная кавычка. Попробуем. Такой вариант программы отработает корректно:

System.out.println("Dragon's mother"); 

А что, если мы хотим создать такую строку:

В ней есть и одинарные, и двойные кавычки. Как быть в этой ситуации? Если просто попытаться вывести такую строку, то мы получим ошибку:

// Завершится с синтаксической ошибкой System.out.println("Dragon's mother said "No""); 

С точки зрения Java, здесь странная конструкция из трех компонентов:

  • Строки «Dragon’s mother said «
  • Строки «»
  • Слово No между ними, которое не рассматривается как строка, потому что оно не в кавычках

Привычным способом эту строчку не вывести. Для вывода таких строк используют символ экранирования: \ .

Если поставить \ перед кавычкой, это будет означать, что кавычку нужно рассматривать не как начало или конец строки, а как ее часть:

System.out.println("Dragon's mother said \"No\""); 

Экранирующие последовательности

Мы хотим показать диалог Матери Драконов со своим ребенком:

Если вывести на экран строку с таким текстом:

System.out.println("- Are you hungry?- Aaaarrrgh!"); 

Не то, что мы хотели. Строки расположены друг за другом, а не одна ниже другой. Нам нужно как-то сказать интерпретатору «нажать на Enter» — сделать перевод строки после вопросительного знака. Это можно сделать, используя символ перевода строки: \n :

System.out.println("- Are you hungry?\n- Aaaarrrgh!"); 

\n — это специальный символ. В литературе его часто обозначают как LF (Line Feed). Возможно, вы сейчас подумали, что это опечатка, ведь здесь мы видим два символа \ и n , но это не так. С точки зрения компьютера — это один невидимый символ перевода строки:

// Мы это не изучали, но вы должны знать правду // Ниже код, который возвращает длину строки "a".length(); // 1 "\n".length(); // 1 . "\n\n".length(); // 2 . 

Почему так сделано? \n — всего лишь способ записать символ перевода строки, но сам перевод строки по своему смыслу – это один символ, правда, невидимый.

Именно поэтому и возникла такая задача. Нужно было как-то представить его на клавиатуре. А поскольку количество знаков на клавиатуре ограничено и отдано под самые важные, то все специальные символы реализуются в виде таких обозначений.

Символ перевода строки не является чем-то специфичным для программирования. Все, кто хоть раз печатал на компьютере, использовал перевод строки, нажимая на Enter.

Во многих редакторах есть опция, позволяющая включить отображение невидимых символов. Эта опция помогает понять, где они находятся, хотя это всего лишь схематичное отображение, ведь у этих невидимых символов нет графического представления:

Устройство, которое выводит соответствующий текст, учитывает этот символ. Например, принтер при встрече с LF протаскивает бумагу вверх на одну строку, а текстовый редактор переносит весь последующий текст ниже, также на одну строку.

\n — это пример экранирующей последовательности (escape sequence). Их еще называют управляющими конструкциями. Хотя таких символов не один десяток, в программировании часто встречаются всего несколько.

Кроме перевода строки, к таким символам относятся:

  • Табуляция — разрыв, получаемый при нажатии на кнопку Tab
  • Возврат каретки (только в Windows)

Программистам часто нужно использовать перевод строки \n для правильного форматирования текста:

System.out.println("Gregor Clegane\nDunsen\nPolliver\nChiswyck"); 

На экран выведется:

Обратите внимание на следующие моменты:

  1. Не имеет значения, что стоит перед или после \n : символ или пустая строка. Перевод будет обнаружен и выполнен в любом случае
  2. Помните, что строка может содержать один символ или вообще ноль символов. А еще строка может содержать только \n . Проанализируйте следующий пример:

System.out.println("\n"); System.out.println("Dunsen"); 

Здесь мы сначала выводим строку «перевод строки», а потом делаем вывод обыкновенной строки. Программа выведет на экран:

Почему перед строкой Dunsen появилось две пустые строки, а не одна? Дело в том, что System.out.println() при выводе значения автоматически добавляет в конец символ перевода строки. Таким образом, один перевод строки мы указали явно, передав этот символ экранирующей последовательности аргументом в функцию, а второй перевод строки добавлен самой функцией автоматически. Еще пример кода:

System.out.println("Polliver"); System.out.println("Gregor Clegane"); System.out.println(); System.out.println("Chiswyck\n"); System.out.println("Dunsen"); 

Вывод будет таким:

System.out.println("Joffrey loves using \\n"); 

на экран выйдет:

Небольшое, но важное замечание про Windows. В Windows для перевода строк по умолчанию используется \r\n — это связано с историческими причинами. Такая комбинация хорошо работает только в Windows, но создает проблемы при переносе в другие системы: например, когда в команде разработчиков есть пользователи как Windows, так и Linux.

Дело в том, что последовательность \r\n имеет разную трактовку в зависимости от выбранной кодировки. Поэтому в среде разработчиков принято всегда использовать \n без \r , так как LF всегда трактуется одинаково и отлично работает в любой системе. Не забудьте настроить ваш редактор на использование \n .

Конкатенация

Программы постоянно оперируют строками. Все, что мы видим на сайтах или в мобильных приложениях, так или иначе представлено в виде текста. Этот текст чаще всего динамический — полученный из разных частей, которые соединяются вместе. Операция соединения строк в программировании называется конкатенацией и выглядит так:

// Оператор такой же, как и при сложении чисел, // но здесь он имеет другой смысл (семантику) System.out.println("Dragon" + "stone"); // => Dragonstone 

Склеивание строк всегда происходит в том же порядке, в котором записаны операнды. Левый операнд становится левой частью строки, а правый — правой. Вот еще несколько примеров:

System.out.println("Kings" + "wood"); // => Kingswood // Обратный порядок слов System.out.println("road" + "Kings"); // => roadKings // Конкатенировать можно абсолютно любые строки System.out.println("King's" + "Landing"); // => King'sLanding 

В последнем примере название города получилось с ошибкой: King’s Landing нужно писать через пробел. Но в наших начальных строках не было пробелов, а пробелы в самом коде вокруг символа + не имеют значения, потому что они не являются частью строк.

Из этой ситуации есть три выхода:

// Ставим пробел в левой части System.out.println("King's " + "Landing"); // => King's Landing // Ставим пробел в правой части System.out.println("King's" + " Landing"); // => King's Landing // Добавляем пробел отдельно System.out.println("King's" + " " + "Landing"); // => King's Landing 

Пробел — такой же символ, как и другие. Чем больше пробелов, тем шире отступы:

System.out.println("King's " + " Landing"); // => King's Landing System.out.println("King's " + " Landing"); // => King's Landing 
Дополнительные материалы

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Об обучении на Хекслете

  • Статья «Как учиться и справляться с негативными мыслями»
  • Статья «Ловушки обучения»
  • Статья «Сложные простые задачи по программированию»
  • Урок «Как эффективно учиться на Хекслете»
  • Вебинар « Как самостоятельно учиться »

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов

Наши выпускники работают в компаниях:

Как вывести кавычки в java

Скачай курс
в приложении

Перейти в приложение
Открыть мобильную версию сайта

© 2013 — 2023. Stepik

Наши условия использования и конфиденциальности

Get it on Google Play

Public user contributions licensed under cc-wiki license with attribution required

Как вставить символ двойных кавычек в строку?

Самый стандартный способ, применяемый во многих языка, в том числе и в Java — экранирование с помощью символа \ :

String myString = "Строка со \"словом\" в кавычках"; 

Отслеживать
28.5k 12 12 золотых знаков 58 58 серебряных знаков 118 118 бронзовых знаков
ответ дан 2 апр 2015 в 8:24
DreamChild DreamChild
36.1k 2 2 золотых знака 44 44 серебряных знака 85 85 бронзовых знаков
Это еще называется escape символ
2 апр 2015 в 8:47

Благодарю, это работает, но задача усложнилась.Перед кавычками еще надо поставить слеш +»
2 апр 2015 в 9:13
решается аналогично
2 апр 2015 в 9:16
Да, действительно
2 апр 2015 в 9:17
в конце строки кавычки лишние
13 дек 2016 в 15:06

String str1 = "Строка со \"словом\" в кавычках"; 

Отслеживать
ответ дан 2 апр 2015 в 8:23
Павел Вершинин Павел Вершинин
3,981 15 15 серебряных знаков 23 23 бронзовых знака

Да, есть, добавляешь перед каждым символом который нужно экранировать \ . Например, для вывода на экран «C: \\\folder\\\folder1\» нужно добавить по «экрану» перед КАЖДЫМ символом вот так:

System.out.println("\"C: \\\\\\\folder\\\\\\\folder1\\\\\""); 

Отслеживать
9,323 3 3 золотых знака 29 29 серебряных знаков 57 57 бронзовых знаков
ответ дан 31 мар 2017 в 9:26
21 1 1 бронзовый знак

final char dm = (char) 34; final String string = "STRING: " + dm + " string " + dm; System.out.println(string); 

Отслеживать
ответ дан 12 ноя 2017 в 7:49
4,086 4 4 золотых знака 13 13 серебряных знаков 29 29 бронзовых знаков
Вообще не понял, а за что заминусовали? У меня всё отработало прекрасно.
20 дек 2018 в 15:24

 String x = "\\"; String y = "\""; System.out.println("It's Windows path: " + y + "C:" + x + "Program Files" + x + "Java" + x + "jdk1.7.0" + x + "bin" + y); System.out.println("It's Java string: " + x + y + "C:" + x + x + "Program Files" + x + x + "Java" + x + x + "jdk1.7.0" + x + x + "bin" + x + y); 

Отслеживать
ответ дан 24 янв 2016 в 21:12
11 1 1 бронзовый знак
Решение задачи с JavaRush, верно? А есть «нормальный» способ экранировать кавычки?
26 окт 2016 в 17:46
@Dunaevsky Maxim, А символом для экранирования экранировать не нормально? 🙂
29 июн 2017 в 14:06

  • java
  • android
  • строки
    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.10.27.43697

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Как в кавычки можно написать содержимое поля?

Как можно без цикла вытащить содержимое того или иного поля БД
$fg = mysql_query("SELECT * FROM `tags` LIMIT 1"); В переменной всего одна запись. Вопрос.

Передать ZipInputStream содержимое TextArea. Или как запаковать содержимое текстового поля
Есть простой текстовый редактор. Необходимо добавить функцию сохранения сразу в zip.(Не спрашивайте.

Можно ли достать содержимое Rt поля до сохранения
Вот, собственно и вопрос: при создании документа, перед его сохранением нужно проверять, что в RT.

Как написать кавычки внутри кавычек?
здравствуйте. как написать кавычки внутри кавычек? я пробовал так: IBQuery2.SQL.Text := ‘execute.

Эксперт Java

3638 / 2970 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
Ну значит помещай в кавычки очевидно же
Регистрация: 05.05.2020
Сообщений: 186
xoraxax, А можно не помещая содержимое поля в кавычки?

Эксперт Java

3638 / 2970 / 918
Регистрация: 05.07.2013
Сообщений: 14,220

ЦитатаСообщение от afasdfsadfs Посмотреть сообщение

но если не помещать содержимое поля в кавычки прога крашется
ну ты сам же пишешь
Регистрация: 05.05.2020
Сообщений: 186
xoraxax, Я думал есть способ, чтобы самому не писать в кавычках, чтобы потом самому их не вставлять.

О каких кавычках вообще идет речь?

Меню пользователя @ Arsegg

Регистрация: 05.05.2020
Сообщений: 186
Arsegg, Для указания пути.
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Как можно в DLookup обойти апостроф и кавычки в значениях полей
mobile, Добрый день. Нужна еще помощь. Пытаюсь получить Цена из таблицы tbТМЦ rst!ЦенаУ =.

Как передать в TextBox содержимое поля класса ?
И можете объяснить как взаимодействует форма с другим классом? Как в методе обычного класса.

Как вывести на печать содержимое текстового поля?
Как вывести на печать содержимое текстового поля? Подскажите пож.

Как присвоить содержимое скрытого поля — переменной?
Извиняюсь, если вопрос глупый, но все же. Есть ли какая возможность присвоить переменной значение.

Как вывести содержимое поля из двух таблиц?
Приветствую Всех гуру и начинающих вопрос мой думаю простой и не новинка но сам додумать не могу.

как записать в файл содержимое объекта класса если в нем объявлены как поля List — ы?
как записать в файл содержимое объекта класса если в нем объявлены как поля List — ы?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *