A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© shang1jk 中级黑马   /  2013-6-21 20:36  /  3067 人查看  /  15 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 孙百鑫 于 2013-6-27 07:17 编辑

请教'\r' 和 '\n' 的区别.

网上都是说:
'\r'是回到行首
'\n'是下移一行

但是这么写:
  1. class Test2
  2. {
  3.         public static void main(String [] args)
  4.         {                        
  5.                         System.out.print("fa\rdfa\nsdf");
  6.                         
  7.         }

  8. }
复制代码
输出结果是:
fa
dfa
sdf


只有'\n'是下移一行的话, 不该出现三行啊?

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

15 个回复

倒序浏览
在毕老师的视频中介绍到转义字符\
\n :换行;
\r :按下回车符;
\b :退格;
\t :制表符。

其中关于换行,在Linux系统中识别的换行符是"\n",在Windows系统中识别的换行符是"\r\n"。

所以"\r" "\n"都能达到换行的结果,只不过一个是按下回车符,一个生成新的一行。

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
"\r"与"\n"在不同环境中代表作用不一样。
在c、c#语言中:  '\r'是回到行首
                       '\n'是下移一行
在java语言环境中"\r"与"\n"的作用与"\r\n"作用一样,都是回车换行。

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
谢威 发表于 2013-6-21 21:30
"\r"与"\n"在不同环境中代表作用不一样。
在c、c#语言中:  '\r'是回到行首
                       '\n'是 ...

可是看老毕的视频, 处理键盘录入的时候对二者是区分处理的啊. 为什么呀

就是这个例子中的:
  1. /*
  2. * 录入一行, 然后输出.
  3. * 若是over, 则停止.
  4. */

  5. import java.io.IOException;
  6. import java.io.InputStream;

  7. public class ReadIn {

  8.         public static void main(String[] args) throws IOException {
  9.                
  10.                 InputStream in = System.in;                        //标准输入流
  11.                
  12.                 StringBuilder sb = new StringBuilder();
  13.                
  14.                 while(true)
  15.                 {
  16.                         int ch = in.read();
  17.                         if(ch=='\r')
  18.                                 continue;
  19.                         if(ch=='\n')
  20.                         {
  21.                                 String s = sb.toString();
  22.                                 if("over".equals(s))                        //判断是否是over
  23.                                         break;
  24.                                 System.out.println(s.toUpperCase());
  25.                                 sb.delete(0, sb.length());
  26.                         }
  27.                         else
  28.                                 sb.append((char)ch);
  29.                 }

  30.         }

  31. }
复制代码
回复 使用道具 举报
高波 发表于 2013-6-21 21:07
在毕老师的视频中介绍到转义字符\
\n :换行;
\r :按下回车符;

谢谢     
回复 使用道具 举报
shang1jk 发表于 2013-6-21 22:05
可是看老毕的视频, 处理键盘录入的时候对二者是区分处理的啊. 为什么呀

就是这个例子中的: ...

键盘录入时的环境是windows环境,他们的之间就要区别处理了。
回复 使用道具 举报
在不同语言中转义符会有所不同。java中\r表示按下回车,\n表示换行。

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
Heart 中级黑马 2013-6-22 10:57:16
8#
\r表示按下回车,\n表示换行,在windows系统中,\r\n可同时用,也可分开用,都可以达到换行的效果。
网上说\r是回到首行说的也没错,只不过是回到当前行的首航
回复 使用道具 举报
Heart 发表于 2013-6-22 10:57
\r表示按下回车,\n表示换行,在windows系统中,\r\n可同时用,也可分开用,都可以达到换行的效果。
网上说\ ...

看楼主的代码, \r是换到下一行的行首才对啊
回复 使用道具 举报
今天看视频也遇到了这个问题。 \r 应该是不进行换行而在同一行覆盖写在这行的开头。举个例子:
1、System.out.print("hello\r World"); 输出的结果是World
  2、System.out.print("hello java!\r World"); 输出的结果是World java!
楼主的代码运行出来是:
dfa
sdf
回复 使用道具 举报
小佛爷 发表于 2013-6-23 22:01
今天看视频也遇到了这个问题。 \r 应该是不进行换行而在同一行覆盖写在这行的开头。举个例子:
1、System. ...

奇了怪了, 测试了一下,
同样的代码在命令行里输出 world
在eclipse里运行输出 hello world

谁能解释....

回复 使用道具 举报
我们这两天讲了转义字符:
\r  \n  都是回车符~~
Linux中换行只用\n
windows中记事本里 回车符用\r\n两个字符.
Dos能识别 \n
都是换行的意思.
回复 使用道具 举报
8047107 发表于 2013-6-23 23:00
我们这两天讲了转义字符:
\r  \n  都是回车符~~
Linux中换行只用\n

dos里\r是回到行首的意思
回复 使用道具 举报
shang1jk 发表于 2013-6-23 23:09
dos里\r是回到行首的意思

回车符~
回复 使用道具 举报
楼主您好。我已将您的帖子改成已解决。如果帖子发布长时间没加分。及时联系我。以免漏分的情况发生{:soso_e100:}
回复 使用道具 举报
'\r'是回车,'\n'是换行,前者使光标到行首,后者使光标下移一格。通常用的Enter是两个加起来
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马