在Java中,“carriage return”和“form feed”的含义是什么?

17

在Java中,\r/f是回车符和换页符的意思。有没有人能够举一个使用这些符号的小例子呢?

System.out.println("hello world \r rafter \n nafter \f fafter");

我不知道上面那一堆是什么意思。

我得到的输出是:

hello world 
 r-after 
 n-after  f-after

我得到了\r作为新行,\n表示新行,\f会在我的屏幕上出现一个框。

4个回答

37

在现代应用程序中,你很少单独使用它们。

\r (回车符)的作用就像它的名字一样,如果你熟悉老式手动打字机: 它将“车”(纸张通过的卷轴)移回到行的开头。在终端(或类似设备)上,它将输出点移到行的开头,而不向下移动一行(通常情况下)。

\f是(正如你所说的)换页符, 它告诉老式打印机开始一个新页面。在计算机文档中,它有时用于表示分页。

最后,还有换行符(也称为“换行符”):\n。这意味着“向下移动一行”。在某些终端上,它只是向下移动一行而没有进行回车;在其他终端上,它会同时执行回车和换行。

"

\n (LF, 换行符) 是*nix及其衍生操作系统上标准的文本文件换行符。 \r\n (CRLF) 是DOS和Windows上标准的文本文件换行符。在Mac OS X(它是*nix-derived)之前的日子里,\r(单独出现)是Mac上文本文件中的标准换行符。

"

14
为了看到区别,您必须从命令提示符中运行代码。Eclipse控制台(其他IDE类似)无法模拟完整TTY终端的行为,并且对于 \r 和 \n 都会移到下一行。然而,在命令行中, \r 仅会将光标移回到当前行的开头。当您想要显示程序的实时进度而无需滚动时,这非常方便。
换页信号更难预测,也不太有用。在某些情况下,它可能会清除终端窗口。

是的,在Eclipse中的控制台内,转义序列的工作方式类似,并且您看不到这些转义序列的区别。 - christianbueno.1

2
回车和换页是终端或打印机控制字符,在Java中没有任何意义。
在终端仿真中,当您打印\r时,下一个字符可能会被打印在当前行的第一行(覆盖已有内容)。
打印换页符时,可能会清除屏幕,也可能不会。在打印机上,它应该导致当前页面被弹出,以便打印继续在新页面上进行。
但是,如前所述,无论控制字符是由Java程序打印的,终端(仿真)还是打印机都不关心。

0

\f\n类似,不同之处在于新行会缩进。

例如:"hello it was \f great meeting you"

它的输出结果为:

 hello it was 
              great meeting you 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接