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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 阿苏勒 中级黑马   /  2014-8-6 12:38  /  1094 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.io.*;
  2. class  MyBuffer
  3. {
  4.         private FileReader fr;
  5.        
  6.         MyBuffer(FileReader fr){
  7.                 this.fr=fr;
  8.         }
  9.         public String myReadLine()throws Exception{
  10.                 StringBuilder sb=new StringBuilder();
  11.                 int len=0;
  12.                 while((len=fr.read())!=-1){
  13.                         if(len=='\r'){
  14.                                 continue;
  15.                         }
  16.                         else if(len=='\n'){
  17.                                 return sb.toString();
  18.                         }
  19.                         else{
  20.                                 sb.append((char)len);
  21.                         }
  22.                 }
  23.                
  24.                 if(sb.length()!=0){
  25.                         return sb.toString();
  26.                 }
  27.                 return null;
  28.         }
  29.         public void myClose()throws Exception{
  30.                 fr.close();
  31.         }

  32. }

  33. class ReadLineDemo
  34. {
  35.         public static void main(String[] args)throws Exception
  36.         {
  37.                 MyBuffer mybur=new MyBuffer(new FileReader("Demo.java"));
  38.                 String line=null;
  39.                 while((line=mybur.myReadLine())!=null){
  40.                         System.out.println(line);
  41.                 }
  42.                 mybur.myClose();
  43.         }
  44. }
复制代码
问题是,为什么读取到'\n'的时候,StringBuilder 容器不清空?
求指教。



3 个回复

倒序浏览
很多字眼在java中是有特殊含义的,就比如你这儿的反斜杠 \, 这个字符在java中的特殊含义就是转义符,代码在执行时,遇到这个字符就要去查看后面跟的字符是什么,如果是k,他就会输出 \k,因为这个字符在java中没有特殊含义,但是一旦发现是有特殊含义的字符:比如\n,这就表示是换行符,而不是普通字符。所以StringBuilder不清空字符\n.
回复 使用道具 举报
执行return将对象返回给方法之后,方法就结束了,不会在执行了,也就是StringBuilder 的对象不会在进行任何操作。清不清空都没有影响。下次再执行时,又会重新实例化StringBuilder ,所以不清空也没关系。
回复 使用道具 举报
你下次读,它下次重新建立对象了,所以不需要
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马