Что означает \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