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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

我定义了一个使用BufferedReader读取文本文件的方法,代码如下:
  1.         /**
  2.          * 使用BufferedReader读取文本文件内容
  3.          * @param bufr
  4.          * @return
  5.          * @throws IOException
  6.          */
  7.         public static String  ReadFileText(BufferedReader bufr) throws IOException {
  8.                 String lineContent=null;
  9.                 StringBuilder sb=new StringBuilder();
  10.                 while((lineContent=bufr.readLine())!=null)
  11.                 {
  12.                         sb.append(lineContent);
  13.                         sb.append(LINE_SEPARATOR);
  14.                 }
  15.                 lineContent=sb.toString();
  16.                 return lineContent;
  17.         }
复制代码

while循环的条件能不能写成:while((lineContent=bufr.readLine())!="")
这两个有什么区别呢?
PS:两种方式运行结果截然不同

6 个回复

倒序浏览
""和null一样吗。。。
回复 使用道具 举报
null代表的是空。“”代表的是空字符串,肯定不一样啦~
回复 使用道具 举报
哥们,
1,这还是那个亘古不变的==  与 equals()的区别问题呀,你这里!=“”,表示的是读取到的字符串地址是否与“”的地址相等,很显然 这几乎不可能,所以你的程序必然会陷入死循环。
2,null 与 “”是完全两个东西,比如一个框子,null就表示什么都没有,连这个框子本身都没有,而“”表示框子里面没有东西
3,如果你想达到读取到“”就停止的话可以使用: while(!(lineContent=bufr.readLine()).equals(""))
回复 使用道具 举报
是个死循环吗?
readLine(); 读到末尾就返回null,你要是读到末尾了,你拿null和“”比较,肯定不行啊,你可以查查API
回复 使用道具 举报
读取一个字符是当一个对象来看,所以不能使用"",""的含义是空串,而非对象为空
回复 使用道具 举报
闲人 中级黑马 2014-4-22 12:51:07
7#
本帖最后由 闲人 于 2014-4-22 12:53 编辑

null是空
“”是空白字符串
此空非彼空
打个比方:
          当你文本中有 “afdasfasd afdasfsad”时
              如果是null,他会全部写完“afdasfasd afdasfsad”
             如果是”“,它只会写“afdasfasd”
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马