黑马程序员技术交流社区
标题:
ReadLine()原理的问题
[打印本页]
作者:
阿苏勒
时间:
2014-8-6 12:38
标题:
ReadLine()原理的问题
import java.io.*;
class MyBuffer
{
private FileReader fr;
MyBuffer(FileReader fr){
this.fr=fr;
}
public String myReadLine()throws Exception{
StringBuilder sb=new StringBuilder();
int len=0;
while((len=fr.read())!=-1){
if(len=='\r'){
continue;
}
else if(len=='\n'){
return sb.toString();
}
else{
sb.append((char)len);
}
}
if(sb.length()!=0){
return sb.toString();
}
return null;
}
public void myClose()throws Exception{
fr.close();
}
}
class ReadLineDemo
{
public static void main(String[] args)throws Exception
{
MyBuffer mybur=new MyBuffer(new FileReader("Demo.java"));
String line=null;
while((line=mybur.myReadLine())!=null){
System.out.println(line);
}
mybur.myClose();
}
}
复制代码
问题是,为什么读取到'\n'的时候,StringBuilder 容器不清空?
求指教。
作者:
怀念黑海岸
时间:
2014-8-6 14:03
很多字眼在java中是有特殊含义的,就比如你这儿的反斜杠 \, 这个字符在java中的特殊含义就是转义符,代码在执行时,遇到这个字符就要去查看后面跟的字符是什么,如果是k,他就会输出 \k,因为这个字符在java中没有特殊含义,但是一旦发现是有特殊含义的字符:比如\n,这就表示是换行符,而不是普通字符。所以StringBuilder不清空字符\n.
作者:
晓风
时间:
2014-8-7 20:48
执行return将对象返回给方法之后,方法就结束了,不会在执行了,也就是StringBuilder 的对象不会在进行任何操作。清不清空都没有影响。下次再执行时,又会重新实例化StringBuilder ,所以不清空也没关系。
作者:
star5603
时间:
2014-8-7 21:46
你下次读,它下次重新建立对象了,所以不需要
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2