Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Чем отличается "\r" от "\n" в языке Java?

(Активный) Знаток (363), закрыт 10 лет назад
Имеються в виду esc-последовательности для форматирования текста.
Пример:
1) System.out.print("хз \r хз");
Выдаёт:
хз
хз
2) System.out.print("хз \n хз");
Выдаёт:
хз
хз
Хоть убейте - не могу понять в чём разница!
В учебнике написано:
"\r - возврат каретки
\n - перевод строки"
Чем "Возврат коретки" отличается от обычного перевода строки?
Лучший ответ
Александр Искусственный Интеллект (301188) 13 лет назад
Допустим вот такое
System.out.print("ABCDEFG\r1234");
выдаст
1234EFG
т. е. возврат каретки на исходную позицию в этой же строке.

А вот такое
System.out.print("ABCDEFG\n1234");
выдаст
ABCDEFG
1234
т. е. переход на новую строку.

а ваш пример
System.out.print("хз \r хз");
должен выбать
хз
(именно с пробелом перед "хэ"
и именно один раз.
Остальные ответы
egregreh Мыслитель (8817) 13 лет назад
Возврат каретки (англ. carriage return, CR) — управляющий символ ASCII (0x0D, 13 в десятичной системе счисления, '\r'), при выводе которого курсор перемещается к левому краю поля, не переходя на другую строку. Этот управляющий символ вводится клавишей «Enter». Будучи записан в файле, в отдельности рассматривается как перевод строки только в системах Macintosh.
Подача строки (от англ. line feed, LF — «подача [бумаги] на строку» ) — управляющий символ ASCII (0x0A, 10 в десятичной системе счисления, '\n'), при выводе которого курсор перемещается на следующую строку. В случае принтера это означает сдвиг бумаги вверх, в случае дисплея — сдвиг курсора вниз, если ещё осталось место, и прокрутку текста вверх, если курсор находился на нижней строке. Возвращается ли при этом курсор к левому краю или нет, зависит от реализации.

LF (ASCII 0x0A) используется в Multics, UNIX, UNIX-подобных операционных системах (GNU/Linux, AIX, Xenix, Mac OS X, FreeBSD и др.) , BeOS, Amiga UNIX, RISC OS и других;

CR (ASCII 0x0D) используется в 8-битовых машинах Commodore, машинах TRS-80, Apple II, системах Mac OS до версии 9 и OS-9;

CR+LF (ASCII 0x0D 0x0A) используется в DEC RT-11 и большинстве других ранних не-UNIX- и не-IBM-систем, а также в CP/M, MP/M (англ.) , MS-DOS, OS/2, Microsoft Windows, Symbian OS, протоколах Интернет.

Максим Рогачёв Ученик (178) 6 лет назад
Александр привел несоответствующий действительности пример, т. к. при написании System.out.print("ABCDEFG\r1234"); выведет не 1234EFG, а
ABCDEFG
1234
Java покажет похожие результаты и дело, на самом деле, не в ней, а в платформе, которую вы используете!
\n для unix
\r для mac
\r\n для Windows
Похожие вопросы