我创建了一个名为doc.txt的文档,在其中我写了“blaha”。我写了一个程序,看它是否说blaha。
File file = new File("C:/Users/Public/doc.txt");
if (file.exists()){
FileReader fr = new FileReader(file);
LineNumberReader ln = new LineNumberReader(fr);
while (ln.getLineNumber() == 0){
String s = ln.readLine();
System.out.println(s);
if(s=="blaha"){
System.out.println("Match");
}else{
System.out.println("Nomatch");
}
}
}
当我运行程序时,它总是说Nomatch。这是为什么?
答案 0 :(得分:6)
要比较值相等的字符串(两个对象是否具有相同的值),请执行以下操作:
s.equals("blaha")
==
运算符测试引用身份(两个对象是否相同)。大多数时候,你对平等感兴趣。
答案 1 :(得分:1)
因为blaha!= trollface。此外,您将希望使其更加健壮以处理尾随空白区域。你可能想在字符串上使用trim()。另外,使用String.equals()或string.contains()。
答案 2 :(得分:0)
首先总是使用.equals。不,如果没有但是没有。阅读本文了解详情:http://www.coderanch.com/how-to/java/AvoidTheEqualityOperator