Java中的字符'\ n'和'\ r'有什么区别?

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

Java中char文字\n\r之间的实际区别是什么?


请注意,上面的问题是关于\n 字符 ,而不是BufferedWriter上的newLine()函数,所以这个问题是不相关的。

\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(并向上送纸)。

由于所有这些混乱,一些输出目标将接受多行换行序列,所以根据输出的内容,你可以看到两个字符都有相同的效果。

\n是针对unix的
\r是为mac
\r\n是用于Windows格式

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

它会给你适合你的操作系统

这取决于你工作的平台。 为了得到正确的结果使用 –

 System.getProperty("line.separator") 

差异不是Java特定的,而是平台特定的。 从历史上看,类似UNIX的操作系统使用\n作为换行符,其他一些不赞成使用的操作系统已经使用\r并且Windows操作系统已经使用了\r\n

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

历史上回车是应该做什么的homebutton做:返回插入到行的开始。

\n应该给你一个新的线,但不能移动插入符号。

如果你想到旧的打印机,你几乎想到了字符集的原作者是如何思考的。 移动送纸器和移动脱字符是不同的操作。 这两个字符expression了这种差异。

当在控制台(Eclipse)中打印一个string时,\ n,\ r和\ r \ n具有相同的效果,所有这些都会给你一个新行;但是\ n \ r(也是\ n \ n,\ r \ r)会给你两个新行;当你给一个文件写一个string时,只有\ r \ n可以给你一个新行。