Что означает \r возврат каретки и \f подача формы в Java?
Что означает \r
возврат каретки и /f
подача формы в Java? Кто-нибудь может привести небольшой пример того, когда мы должны использовать эти типы символов?
System.out.println("hello world \r rafter \n nafter \f fafter");
Я не знаю, что к чему в этом выше.
Вывод, который я получил:
hello world
r-after
n-after f-after
Я получил \r
качестве новой строки и \n
для новой строки, а с \f
для меня появляется окно.
Ответы
Ответ 1
Вы редко используете любой из них (в отдельности) в современных приложениях.
\r
(возврат каретки) - это то, что звучит как , если вы знакомы со старомодными ручными пишущими машинами: он перемещается "каретку" (рулон бумаги подается) обратно в начало линии. На терминале (или аналогичном) он перемещает выходную точку обратно в начало строки, не перемещаясь по линии (обычно).
\f
(как вы сказали) formfeed, он сообщает старомодным принтерам, чтобы начать новую страницу. В компьютерных документах иногда используется для указания разрыва страницы.
Округление, там также фид (ака "новая линия" ): \n
. Это означает, что "двигайтесь вниз по линии". В некоторых терминалах он просто перемещается по линии без возврата каретки; на других, он делает оба.
\n
(LF, newline) - это стандартный разрыв строки текстового файла на * nix и производных операционных системах. \r\n
(CRLF) - это стандартный разрыв текстовой строки в DOS и Windows. В тот же день \r
(сам по себе) был стандартным прерыванием строки в текстовых файлах на Mac, до Mac OS X (который является * nix-производным).
Ответ 2
Чтобы увидеть разницу, вы должны запустить свой код из командной строки. Консоль Eclipse (и аналогичная для других IDE) не моделирует поведение полного терминала TTY и переместится на следующую строку для \r
и \n
. Однако в командной строке \r
будет только перемещать курсор обратно в начало текущей строки. Это очень удобно, если вы хотите показывать живое продвижение своей программы без прокрутки.
Сигнал подачи формы сложнее прогнозировать и не так полезен. В некоторых случаях это может привести к очистке окна терминала.
Ответ 3
Возврат каретки и подача формы являются управляющими символами терминала или принтера и не имеют никакого значения в Java.
В эмуляции терминала, когда вы печатаете \r, следующий символ, возможно, будет напечатан в первой строке текущей строки (перезаписывая то, что уже есть).
Подача формы при печати на терминал может или не может очистить экран. На принтере это должно привести к тому, что текущая страница будет извлечена, чтобы печать продолжалась на новой странице.
Но, как говорилось ранее, ни терминал (эмуляция), ни принтер не заботятся о том, что контрольный символ был напечатан программой Java.
Ответ 4
\f
похож на \n
, разница в том, что новая строка имеет отступ.
Например: "Привет, это была отличная встреча с тобой"
это дает вывод:
hello it was
great meeting you