0

我得到一个文件包含两行:

aaaaa
bbbbb

我用这些行来阅读每一行:

    File f=new File("D:\\xxx.dat");
    FileReader fr = new FileReader(f);
    BufferedReader br = new BufferedReader(fr);
    String str;
    String tmpp="";
    while ((str = br.readLine()) != null) {
         if(str=="bbbbb")
         {
         System.out.print(str);
         }
    }

但结果我什么也没得到。为什么?

4

4 回答 4

6

代替

if(str=="bbbbb")

if(str.equals("bbbbb"))

字符串相等对于初学者和其他语言的程序员来说是一个常见的错误。

于 2013-07-14T19:56:14.317 回答
1

因为您使用的是 "==" 而不是 equals 方法。

于 2013-07-14T19:56:23.207 回答
1

您正在使用 == 来比较字符串。

String 不是原始类型,所以你应该使用.equals()方法。

当你用 == 比较两个字符串时,它将比较两个对象并返回 false,因为它们不指向同一个字符串对象(即使它们代表相同的东西)。

为了更好地理解为什么看看这个答案https://stackoverflow.com/a/73021/2576857,它给出了一个很好的解释IMO。

于 2013-07-14T19:56:46.200 回答
0

看起来您的输入文件第一行包含的不仅仅是“bbbbb”。请检查 if 语句之前 str 的值,并使用 equals 方法比较字符串(比较值而不是引用)

于 2013-07-14T19:57:52.683 回答