黑马程序员技术交流社区
标题:
java中一个回车是占2个字符? 不是\n吗
[打印本页]
作者:
Keith
时间:
2013-3-25 21:46
标题:
java中一个回车是占2个字符? 不是\n吗
本帖最后由 Keith 于 2013-3-26 18:38 编辑
RT:java中一个回车是占2个字符? 不是\n吗
作者:
曹玉龙
时间:
2013-3-25 21:47
本帖最后由 曹玉龙 于 2013-3-25 21:51 编辑
我们在是windows的系统里编辑java程序的,回车实际上是/r/n,即回车换行.
不同的操作系统:
\n: UNIX 系统行末结束符
\r \n: window 系统行末结束符
\r: MAC OS 系统行末结束符
作者:
黑马-郑玉元
时间:
2013-3-25 21:57
这个我还真不知道!第一次听说!
在java里'\'是转义字符,\n在控制台就是换行,在window环境下,换行是\t\n。你能说换行是四个字符么?显然回车占两个字符时错误的说法。
作者:
lucy198921
时间:
2013-3-25 22:32
\n 回车
\r 换行
在java中使用这两个转义字符的时候 "\n\r"表示回车并换行与"\r\n"一样,
PS:
要想实现通过转义字符的换行或者是回车, 要把二者一起使用,单独的使用"\n"或"\r"是毫无意义的。
作者:
薛飞
时间:
2013-3-25 23:24
本帖最后由 薛飞 于 2013-3-25 23:37 编辑
/**
获取当前系统的换行符
*/
class GetHuanHang
{
public static void main(String[] args)
{
lineSeparator();
}
/*
注意:
1,在将流写入文件时,换行应根据操作系统的不同来决定。
2,在程序中我们应尽量使用System.getProperty("line.separator")来获取当前系统的换
行符,而不是写/r/n或/n。
3,当我们在java控制台输出的时候,\r和\n都能达到换行的效果。
*/
public static void lineSeparator()
{
if (System.getProperty("line.separator").equals("\r\n"))
{
System.out.println("\\r\\n is for windows");
}
else
if (System.getProperty("line.separator").equals("\r"))
{
System.out.println("\\r is for Mac");
}
else
if (System.getProperty("line.separator").equals("\n"))
{
System.out.println("\\n is for Unix/Linux");
}
System.out.println("aa\nbb");//\n即为换行。
System.out.println("aaa\rbb");//特别注意输出为:bba 因为\r是回车,即光标返回本行首开始打印。
System.out.println("aa\r\nbb");//\r\n即为windows系统按下Enter键的操作,分两步,先回车后换行。
}
}
复制代码
'\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")来获取当前平台的换行符,这样跨平台性更好。
作者:
薛飞
时间:
2013-3-25 23:34
本帖最后由 薛飞 于 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符号。
作者:
薛飞
时间:
2013-3-25 23:52
lucy198921 发表于 2013-3-25 22:32
\n 回车 \r 换行
在java中使用这两个转义字符的时候 "\n\r"表示回车并换行与"\r\n"一样,
PS:
你好,回车'\r'和换行'\n'是(回车”return和“换行”newline)的首字母。
作者:
罗平
时间:
2013-3-26 08:41
windows: \r\n组合代表回车键
linux:\n 代表回车键
作者:
Keith
时间:
2013-3-26 18:29
谢各位前辈了哈
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2