黑马程序员技术交流社区
标题:
BufferedReader 中的readline()
[打印本页]
作者:
北极£莜蓝
时间:
2014-6-25 23:32
标题:
BufferedReader 中的readline()
public class InputStreamReaderDemo {
public static void main(String[] args) throws IOException {
// 数据源 : 字节流转换成字符流 获取键盘输入
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//目的地
BufferedWriter bw = new BufferedWriter(new FileWriter("demo.txt"));
//数据读取
String line = null;
while((line = br.readLine()) != null) {
/* if("886"==(line)) { // 假设键盘输入886 用== 就不能结束程序.用equals就可以
break;
}*/
if("886".equals(line)) {
break;
} else{
bw.write(line);
bw.newLine();
bw.flush();
}
}
// 释放资源
br.close();
bw.close();
}
}
作者:
北极£莜蓝
时间:
2014-6-25 23:39
== 比较的是地址. equals被重写后,比较的是内容.readline()读取键盘输入的"886",往哪里存?和常量池中的"886" 地址不一致
作者:
陈培果
时间:
2014-6-25 23:55
你这个问题主要是就是涉及到equals和==的区别。
==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。
equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。
比如:
String s1 = new String("str");
String s2 = new String("str");
如果用==号比较,会返回false,因为创建了两个对象,他们在内存中地址的位置是不一样的。
用equals比较则返回true
你的“886“.equals(line)永远是flase,所以不会结束。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2