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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Keith 中级黑马   /  2013-3-25 21:46  /  6430 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Keith 于 2013-3-26 18:38 编辑

RT:java中一个回车是占2个字符? 不是\n吗

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1 新人加油

查看全部评分

8 个回复

倒序浏览
本帖最后由 曹玉龙 于 2013-3-25 21:51 编辑

我们在是windows的系统里编辑java程序的,回车实际上是/r/n,即回车换行.
不同的操作系统:
\n:  UNIX 系统行末结束符
\r \n: window 系统行末结束符
\r:  MAC OS 系统行末结束符

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
这个我还真不知道!第一次听说!
在java里'\'是转义字符,\n在控制台就是换行,在window环境下,换行是\t\n。你能说换行是四个字符么?显然回车占两个字符时错误的说法。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
\n 回车 \r 换行  
在java中使用这两个转义字符的时候 "\n\r"表示回车并换行与"\r\n"一样,
PS:
要想实现通过转义字符的换行或者是回车, 要把二者一起使用,单独的使用"\n"或"\r"是毫无意义的。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 薛飞 于 2013-3-25 23:37 编辑
  1. /**
  2. 获取当前系统的换行符
  3. */
  4. class GetHuanHang
  5. {
  6.         public static void main(String[] args)
  7.         {
  8.                 lineSeparator();
  9.         }
  10.         /*
  11.         注意:
  12.         1,在将流写入文件时,换行应根据操作系统的不同来决定。
  13.         2,在程序中我们应尽量使用System.getProperty("line.separator")来获取当前系统的换
  14.            行符,而不是写/r/n或/n。
  15.         3,当我们在java控制台输出的时候,\r和\n都能达到换行的效果。
  16.         */
  17.         public static void lineSeparator()
  18.         {
  19.                 if (System.getProperty("line.separator").equals("\r\n"))
  20.                 {
  21.                         System.out.println("\\r\\n is for windows");
  22.                 }
  23.                 else
  24.                         if (System.getProperty("line.separator").equals("\r"))
  25.                         {
  26.                                 System.out.println("\\r is for Mac");
  27.                         }
  28.                         else
  29.                                 if (System.getProperty("line.separator").equals("\n"))
  30.                                 {
  31.                                         System.out.println("\\n is for Unix/Linux");
  32.                                 }
  33.                 System.out.println("aa\nbb");//\n即为换行。
  34.                 System.out.println("aaa\rbb");//特别注意输出为:bba 因为\r是回车,即光标返回本行首开始打印。
  35.                 System.out.println("aa\r\nbb");//\r\n即为windows系统按下Enter键的操作,分两步,先回车后换行。
  36.         }
  37. }
复制代码
'\r'是回车,'\n'是换行,前者使光标到行首,后者使光标下移一格。回车和换行是两回事。通常用的Enter是两个加起来。Unix系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“<换行><回 车>”,即“\r\n”;Mac系统里,每行结尾是“<回车>”即“\r”。这样导致的直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。
由以上分析可知,java的换行符可以是 '\n'或'\r\n'或'\r',即可能是两个字符也可能是一个字符。而在实际编程中最好用System.getProperty("line.separator")来获取当前平台的换行符,这样跨平台性更好。

评分

参与人数 1技术分 +2 收起 理由
陈丽莉 + 2

查看全部评分

回复 使用道具 举报
本帖最后由 薛飞 于 2013-3-25 23:43 编辑

在多说一下回车和换行的有趣历史吧{:soso_e100:}
      在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。
      于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。
      这就是“换行”和“回车”的来历,'\r'和'\n'也就是(回车”return和“换行”newline)的首字母。
      后来,计算机发明了,这两个概念也就被般到了计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。于是,就出现了分歧。Unix系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“<换行><回 车>”,即“\r\n”;Mac系统里,每行结尾是“<回车>” 即“\r”。一个直接后果是,Unix/Mac系统下的文件在Windows里打 开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
薛飞 中级黑马 2013-3-25 23:52:56
7#
lucy198921 发表于 2013-3-25 22:32
\n 回车 \r 换行  
在java中使用这两个转义字符的时候 "\n\r"表示回车并换行与"\r\n"一样,
PS:

你好,回车'\r'和换行'\n'是(回车”return和“换行”newline)的首字母。
回复 使用道具 举报
罗平 中级黑马 2013-3-26 08:41:10
8#
windows: \r\n组合代表回车键
linux:\n    代表回车键
回复 使用道具 举报
Keith 中级黑马 2013-3-26 18:29:46
9#
谢各位前辈了哈
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马