为什么\n\r 换两行,而\r\n 只换一行

lnsof 2011-03-31 12:46:28
windows中试了一下。\n 换一行 \r 换一行 \r\n 换一行 \n\r 换两行
System.out.print("\n\r");//\n 换行 \r 换行 \r\n 换一行 \n\r 换两行
...全文
1149 22 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
Nina_chan 2011-03-31
  • 打赏
  • 举报
回复
楼主好奇心比我的还牛
游一游走一走 2011-03-31
  • 打赏
  • 举报
回复
忽略是指没有换行。。。。。。。和你描述的不太一样。。。。。
sky_pearl 2011-03-31
  • 打赏
  • 举报
回复
/r貌似是回到开头,不去下一行咩~~
庆余闲 2011-03-31
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 humanity 的回复:]
正常是在 Windows 下是 \r\n 换行。在 Unix/Linux 下是 \n, Mac 下是 \r。
但,如果我们只给 \r 或 \n,也当你想换行,就当是兼容其它的平台的一种隐含的做法。
[/Quote]

win系统的确是这样默认的,各个系统的处理是不同的

至于最终选择哪个使用就要看系统运行在什么样的服务器上了
hau_ping_li 2011-03-31
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 zyz1985 的回复:]
弱弱的问句,但我使用JAVA测试时在RHEL42与X上的测试结果都是
String[] strings = new String[] { "\r", "\n", "\r\n", "\n\r" };
String[] test=new String[] { "\\r", "\\n",
"\\r\\n", "\\n\\r" };
int i = 0;
System.out.println(A……
[/Quote]
\r 忽略?? 其实不是的,你看看光标的位置,是已经执行回车的了。
Joop_Song 2011-03-31
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 zyz1985 的回复:]
弱弱的问句,但我使用JAVA测试时在RHEL42与X上的测试结果都是
String[] strings = new String[] { "\r", "\n", "\r\n", "\n\r" };
String[] test=new String[] { "\\r", "\\n",
"\\r\\n", "\\n\\r" };
int i = 0;
System.out.println(A……
[/Quote]

你想问什么啊?
游一游走一走 2011-03-31
  • 打赏
  • 举报
回复
弱弱的问句,但我使用JAVA测试时在RHEL42与X上的测试结果都是
String[] strings = new String[] { "\r", "\n", "\r\n", "\n\r" };
String[] test=new String[] { "\\r", "\\n",
"\\r\\n", "\\n\\r" };
int i = 0;
System.out.println(Arrays.toString(test));
for (String item : strings) {
System.out.println("打印" + (++i) + "行");
System.out.print(item);
}
System.out.println("结束打印");
\r 忽略
\n 换一行
\r\n 换一行
\n\r 换一行
Jeelon 2011-03-31
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 hau_ping_li 的回复:]

n是换行;r是回车。看你是先执行那个操作,你试一下在word文档里执行一下换行和回车,应该就会明白的了。
[/Quote]
+1
skineffect 2011-03-31
  • 打赏
  • 举报
回复
这个我也碰到过,windows相比linux在\n之前多了一个\r
hau_ping_li 2011-03-31
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20080421/18/89d3bcc6-5243-4a96-8069-500423a47c8a.html
看看这个吧,很容易理解的.
bf234511171 2011-03-31
  • 打赏
  • 举报
回复
受教了,原来光学技术是不能解决所有问题的。。。
hau_ping_li 2011-03-31
  • 打赏
  • 举报
回复
n是换行;r是回车。看你是先执行那个操作,你试一下在word文档里执行一下换行和回车,应该就会明白的了。
tubage408 2011-03-31
  • 打赏
  • 举报
回复
在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。

于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。

这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。

后来,计算机发明了,这两个概念也就被般到了计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。于是,就出现了分歧。

Unix 系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“<换行><回车 >”,即“\n\r”;Mac系统里,每行结尾是“<回车>”。一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。
  • 打赏
  • 举报
回复
有好奇心是很好的事。
humanity 2011-03-31
  • 打赏
  • 举报
回复
正常是在 Windows 下是 \r\n 换行。在 Unix/Linux 下是 \n, Mac 下是 \r。
但,如果我们只给 \r 或 \n,也当你想换行,就当是兼容其它的平台的一种隐含的做法。
longyi007 2011-03-31
  • 打赏
  • 举报
回复
呵呵 知道了
coolbamboo2008 2011-03-31
  • 打赏
  • 举报
回复
呵呵,这个测试结果还挺有意思的,楼主的好奇心很宝贵
lnsof 2011-03-31
  • 打赏
  • 举报
回复
10楼回复的最好,给一半分;7楼最差,只知道复制。其余回复都又分
lnsof 2011-03-31
  • 打赏
  • 举报
回复
结贴了。总结:
1、IDE(我用的eclipse 3.6)和控制台的效果不一样,eclipse出现换两行,也不知道是什么原因,控制台下测试的结果可以解释清楚了
2、\r 是回车,控制打印机打印头回到行首
\n 换行,打印机上仅仅是走纸的。但在java里做了处理,不仅走纸而且还回到行首,也就是回车换行。
\r\n 和 \n\r 在控制台下效果一样。\r\n 先回到行首,再走纸并且回到行首(注意这里的\n和记事本里面直接“enter”不一样)

Java转义符
转义序列 标准形式 功能描述
\n NL 回车换行
\t HT 水平制表符
\b BS 后退一格
\r CR 回车不换行
\f FF 换页
\' ' 单引号
\\ \ 反斜杠
\" " 双引号
\ddd 0ddd 八进制模式
\xddd 0xddd 十六进制模式
\udddd 0xdddd Unicode双字节字符
huntor 2011-03-31
  • 打赏
  • 举报
回复
\r\n 本来就是windows下换行

62,630

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧