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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 zfan 于 2014-5-2 20:24 编辑

现有如下代码:
  1. public class test{
  2.    public static void main(String[] args){
  3.       System.out.println("abc\rabc");
  4.    }
  5. }
复制代码


该代码在MyEclipse6.6中编译运行结果为:
abc
abc

但是在cmd控制台中编译运行结果为:
abc

请问为什么会产生这种差异?有没有相同情况的小伙伴?是我机子软件设置的原因还是其他,求解释!

1 个回复

倒序浏览
接下来的测试均在CMD中完成,请不要放在IDE开发工具(如eclipse,myeclipse等)中运行
  1. System.out.println("abc\rabc");//结果:abc,这个就是楼主的例子,因为\r前后的内容一样,看不出太大效果
复制代码
  1. System.out.println("abc\r12");//结果:12c
复制代码

先讲一下我对\r  \n   \r\n这三个理解
\r return 回车,(将光标移动到行首)

\n newLine换行,(光标移动到下一行)


根据我的理解,那么第一个例子中先打印出了abc,遇到\r之后光标移动到行首,后面的abc覆盖掉了前面的abc。第二个例子中先打印abc,遇到\r之后光标移动到行首,后面的12覆盖掉了前面的ab,所以打印结果是12c
  1. System.out.println("abc\nabc");//结果如下:
复制代码

这个不多解释,打印abc,遇到\n光标移动到下一行接着打印abc
  1. System.out.println("abc\r\nabc");结果如下:
复制代码
打印abc,遇到
\r光标回到行首,遇到\n光标移动到下一行,打印abc


在eclipse中测试\r  \n   \r\n三者的运行情况全都一样,都进行了换行的操作,我想应该是开发工具做了某些优化的原因吧,没有进行过多测试,但是在实际开发中还是写\r\n比较好,至少不会错。


如果楼主想要了解更多的还是去百度下吧,援引一下一些经典的回答
回车换行符,是2个符。
一个回车,一个换行。
一个是控制屏幕或者从键盘的Enter键输入。
另一个是控制“打印机”!

0d0a问题,是打印机时代留下的问题,LZ如果用过没有屏幕的,只有卷纸输出的机器,就可以知道,如果向打印机发送一个回车符是没有用的,只有发换行符才有用。







评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马