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
。
它实际上取决于用来打印结果的内容。 通常,结果是一样的,就像你说的一样 –
历史上回车是应该做什么的home
button做:返回插入到行的开始。
\n
应该给你一个新的线,但不能移动插入符号。
如果你想到旧的打印机,你几乎想到了字符集的原作者是如何思考的。 移动送纸器和移动脱字符是不同的操作。 这两个字符expression了这种差异。
当在控制台(Eclipse)中打印一个string时,\ n,\ r和\ r \ n具有相同的效果,所有这些都会给你一个新行;但是\ n \ r(也是\ n \ n,\ r \ r)会给你两个新行;当你给一个文件写一个string时,只有\ r \ n可以给你一个新行。