Подтвердить что ты не робот

В чем разница между char литералами \n 'и'\r 'в Java?

В Java символы символов новой строки и возврата каретки кажутся похожими на эффект.

Каковы фактические различия между char литералами \n и \r в Java?


Обратите внимание, что приведенное выше запрашивает символ \n, а не функцию newLine() на BufferedWriter, и поэтому этот другой вопрос не имеет значения.

4b9b3361

Ответ 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 может дать вам новую строку.