日期:2014-05-20  浏览次数:20687 次

FileReader问题 各位大侠帮忙
import java.io.*;

public class readtest{
public static void main(String args[]){

try{
FileReader fr=new FileReader("D:\\Java\\chengxu\\mytest.txt");  
  LineNumberReader lnr = new LineNumberReader(fr);
  String Line="";
int aa=0;
while((Line=lnr.readLine())!=null){
aa++;
FileReader fr2=new FileReader("D:\\Java\\chengxu\\mytest2.txt");
LineNumberReader lnr2 = new LineNumberReader(fr2);
String Line2="";
while((Line2=lnr2.readLine())!=null){
System.out.println("1111111"+Line2);
System.out.println("2222222"+Line);
if(Line==Line2){
System.out.println("@##$#%#");
}else{
System.out.println("缺少"+Line+"文件");
}
}
}
System.out.println(aa);
}catch(IOException obj){};

}
}
打印出Line和Line2的值是相同的 txt文件是复制的 不会有错 但为什么if判断 程序执行的是else?求解 谢谢

------解决方案--------------------
原因是readLine()这个方法返回的是一个String对象,两个对象相比较,即使值一样,用“==”比较也是不相等的,所以"Line==Line2"返回的false,所以就执行else中的语句了,比较字符串对象的值相等用"equals()/equalsIgnoreCase()",不要用"=="

String str1 = "hello";
String str2 = "hello";
str1==str2-------->true
============================
String str1 = new String("hello");
String str2 = new String("hello");
str1==str2-------->false
str1.equals(str2)->true