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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 ppStudent 于 2014-12-2 14:33 编辑

这是我自己定义的myReadLine()方法:
  1. public String myReadLine() throws IOException
  2.     {
  3.             int x=0;
  4.             String s="";//请注意""和null的区别,一个有对象一个没有对象!
  5.             while((x=r.read())!=-1)//readLIne方法只读一行不读换行符
  6.             {
  7.                     if(x=='\r')
  8.                             continue;
  9.                     if(x=='\n')
  10.                             return s;
  11.                     else
  12.                             s=s+(char)x+"";
  13.             }
  14.             if(s.length()!=0)//最后的一行若没有换行符!
  15.                     return s;
  16.             return null;
  17.     }
复制代码

  1. </blockquote></div>这是毕老师的myReadLine方法:
  2. <div class="blockcode"><blockquote>public String myReadLine()throws IOException
  3.         {
  4.                 //定义一个临时容器。原BufferReader封装的是字符数组。
  5.                 //为了演示方便。定义一个StringBuilder容器。因为最终还是要将数据变成字符串。
  6.                 StringBuilder sb = new StringBuilder();
  7.                 int ch = 0;
  8.                 while((ch=r.read())!=-1)
  9.                 {
  10.                         if(ch=='\r')
  11.                                 continue;
  12.                         if(ch=='\n')
  13.                                 return sb.toString();
  14.                         else
  15.                                 sb.append((char)ch);
  16.                 }

  17.                 if(sb.length()!=0)
  18.                         return sb.toString();
  19.                 return null;               
  20.         }
复制代码
为什么我的不行呢?




评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

7 个回复

倒序浏览
毕老师的效率更高,s=(char)x+"",也会生成几个StringBuilder,所以这样子效率很低,自己可以做实验验证下。

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
kerner 发表于 2014-12-2 14:07
毕老师的效率更高,s=(char)x+"",也会生成几个StringBuilder,所以这样子效率很低,自己可以做实验验证下 ...

字符串连接符的意思是将两边的字符串都存入一个StringBuilder然后在toString返回么?这个好像是重载了运算符规则?
回复 使用道具 举报
ppStudent 发表于 2014-12-2 14:28
字符串连接符的意思是将两边的字符串都存入一个StringBuilder然后在toString返回么?这个好像是重载了运算 ...

嗯,是的,重载了+运算符,编译器自作主张的使用了StringBuilder。
回复 使用道具 举报
感觉是效率方面的事
回复 使用道具 举报
太高深了 ,我还是要努力啊
回复 使用道具 举报
看来还得学习啊~
回复 使用道具 举报
小家伙 来自手机 中级黑马 2014-12-3 00:57:55
8#
我才刚学到readline()应用,你都开始自定义了,给楼主赞一个!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马