如何可能,If语句不理解两个相同的东西,它们是相同的?
情况:
我只在字母b中写入txfName
字段,然后按下“确定”按钮。
代码:
String letter = "b";
boolean same = false;
if (letter == txfName.getText()) {
same == true;
}
if语句程序向我显示变量same为false。为什么?怎么可能呢?
如果我写这样的代码:
String letter = "b";
boolean same = false;
if (letter == "b") {
same == true;
}
然后if语句程序向我显示变量同样如此。我不明白,它怎么可能。
答案 0 :(得分:1)
==
比较以查看两个对象是否相同。当您处理字符串时,它们是对象,因此它们可能没有相同的引用事件,尽管它们可以具有相同的值。您想要使用.equals()
。
有关更多详细信息,字符串在java中很特殊,因为有一些内部工作方式具有字符串池。所以在某些情况下,==
实际上似乎可能有效,但在其他情况下可能不会。原因是String池尝试缓存最近使用的字符串以减少内存开销。无论如何.equals()
正是你要找的。 p>
答案 1 :(得分:1)
第一个问题
String letter = "b";
boolean same = false;
if (letter.equals( txfName.getText())) {
same = true;
}
return same;
如果txfName.getText()
返回“b”,将返回true
答案 2 :(得分:0)
要比较java中的对象,请使用.equals()方法而不是“==”运算符
替换以下代码
if (letter == txfName.getText())
到
if (letter.equals(txfName.getText()))