`

java字符之——回车换行

阅读更多
前言

我们知道,任何字符在java中都是以数字存储的。
比如:

char i = 97;
System.out.print(i);

你将看到:
a

正文

在java中,回车符代表的数字是:13 ,换行符代表的数字是:10

回车:13 == \r == return
换行:10 == \n == new line

它们各代表什么意思?

引用

    在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。

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

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

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

    Unix系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“<回车><换行>”,即“\r\n”;Mac系统里,每行结尾是“<回车>”。一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。




引用

小技巧:

有的人在 windows 操作系统中分不清是 \r\n ,还是 \n\r
可以借助这个英文单词记忆: return,r 在 n 的前面,所以是: \r\n





例子与练习



/*
    \r回车是将光标移到一行的前面
    \n是移到下一行
*/

//我一句一句给你分析
//I代表光标位置
System.out.print("a");
//输出:
// aI

System.out.print("\n");
//输出:
// a
// I

System.out.print("b");
//输出:
// a
// bI

System.out.print("\r");
//输出:
// a
// Ib
//注意,在这里,回车将光标移动到了b前面,所以下一个输出c时b将被替换

System.out.print("c");
//输出:
// a
// cI









------------
引用:
http://bbs.csdn.net/topics/120041775
http://zhidao.baidu.com/question/7314718.html
http://www.ruanyifeng.com/blog/2006/04/post_213.html
http://feihu.me/blog/2014/end-of-line/

-






分享到:
评论

相关推荐

    UE中文版编辑器

    UE中文版编辑器绿色免安装版 文档大小不受限制,即使是数兆字节的...-自动换行模式转换到CR/LF's 允许用硬回车将自动换行写入文件 -CR/LF's 转换到自动换行(从文件删除 CR/LF's) -支持模板 -代码折叠、、、

    正则表达式30分钟入门教程

    -不是元字符,只匹配它本身——连字符(或者减号,或者中横线,或者随你怎么称呼它)。 为了避免那么多烦人的重复,我们也可以这样写这个表达式:0\d{2}-\d{8}。 这里\d后面的{2}({8})的意思是前面\d必须连续重复匹配2...

Global site tag (gtag.js) - Google Analytics