Java中字符串'\n'和'\ r'之间有什么区别?

siv*_*636 65 java newline carriage-return

在Java中,换行符和回车符似乎都显示出相同的效果.

char文字\n\rJava 之间的实际差异是什么?


请注意,上面询问的是\n 字符,而不是newLine()函数BufferedWriter,因此这个问题无关.

T.J*_*der 85

\n是换行(LF)字符,字符代码10. \r是回车(CR)字符,字符代码13.它们的作用因系统而异.例如,在Windows上,文本文件中的行使用CR终止,然后立即使用LF(例如,CRLF)终止.在Unix系统及其衍生产品上,只使用LF.(Mac OS X之前的Mac使用CR,但Mac OS X是*nix衍生物,因此使用LF.)

在过去,LF确实只对打印机进行换行(向下移动一行而不移动到页面上的水平位置),并且CR类似地移回到行的开头而不移动纸张,因此一些系统(如Windows)发送CR(返回到左侧)和LF(并向上送纸).

由于所有这些混乱,一些输出目标将接受多个换行符序列,因此您可以从任一角色看到相同的效果,具体取决于您输出的内容.


Jul*_*les 56

\n是因为unix
\r是针对mac(OS X之前)
\r\n是针对Windows格式的

你也可以 System.getProperty("line.separator")

它会为您提供适合您的操作系统

  • 在Java 7及更高版本中,您可以使用`System.lineSeparator()` (12认同)

Cyr*_*llC 15

这取决于您使用的平台.要获得正确的结果,请使用 -

System.getProperty("line.separator")
Run Code Online (Sandbox Code Playgroud)


Uku*_*kit 6

差异不是特定于Java,而是特定于平台.从历史上看,类似UNIX的操作系统已用作\n换行符,其他一些已弃用的操作系统已使用\r,Windows操作系统已使用\r\n.


Der*_*all 6

它实际上取决于用于打印结果的内容。通常,结果是一样的,就像你说的那样 -

从历史上看,回车应该与home按钮的作用相同:将插入符号返回到行的开头。

\n应该给你一个新行但不移动插入符号。

如果您想到旧打印机,您就会想到字符集的原始作者的想法。移动送纸器和移动插入符是不同的操作。这两个字符表达了这种差异。