В чем разница между char литералами \n 'и'\r 'в Java?
В Java символы символов новой строки и возврата каретки кажутся похожими на эффект.
Каковы фактические различия между char литералами \n
и \r
в Java?
Обратите внимание, что приведенное выше запрашивает символ \n
, а не функцию newLine()
на BufferedWriter
, и поэтому этот другой вопрос не имеет значения.
Ответы
Ответ 1
\n
- это символ строки (LF), код символа 10. \r
- символ возврата каретки (CR), код символа 13. Что они делают, отличается от системы к системе. В Windows, например, строки в текстовых файлах заканчиваются с использованием CR, за которым следует LF (например, CRLF). В системах Unix и их производных используется только LF. (Mac до Mac OS X использовал CR, но Mac OS X является производной * nix и поэтому использует LF.)
В старые времена LF буквально делал только линейную подачу на принтерах (перемещение вниз по одной линии, не перемещаясь, где вы горизонтально на странице), и CR аналогичным образом вернулась к началу строки, не перемещая бумагу вверх, поэтому некоторые системы (например, Windows) отправляют CR (возврат в левую сторону) и LF (и подают бумагу вверх).
Из-за всей этой путаницы некоторые выходные цели будут принимать несколько последовательностей разрыва строки, поэтому вы можете увидеть один и тот же эффект от любого символа в зависимости от того, что вы выводите.
Ответ 2
\n
для unix
\r
для mac
\r\n
для формата Windows
вы также можете взять System.getProperty("line.separator")
он предоставит вам соответствующую ОС.
Ответ 3
Это зависит от того, на какой платформе вы работаете. Чтобы получить правильный результат -
System.getProperty("line.separator")
Ответ 4
Разница не специфична для Java, а специфична для платформы.
Исторически UNIX-подобные ОС использовали \n
как символ новой строки, некоторые другие устаревшие ОС использовали \r
, а операционные системы Windows использовали \r\n
.
Ответ 5
Фактически это зависит от того, что используется для печати результата. Обычно результат тот же, как вы говорите -
Исторически предполагается, что возврат каретки делает то, что делает кнопка home
: верните курсор в начало строки.
\n
должен дать вам новую строку, но не перемещать каретку.
Если вы думаете о старых принтерах, вы в значительной степени думаете, как думают оригинальные авторы наборов символов. Это другая операция, перемещающая податчик бумаги и перемещение каретки. Эти два символа выражают эту разницу.
Ответ 6
Когда вы печатаете строку в консоли (Eclipse),\n,\r и \r\n имеют одинаковый эффект, все они выдадут вам новую строку, но \n\r (также\n\n,\r\r) даст вам две новые строки: когда вы пишете строку в файл, только \r\n может дать вам новую строку.