-2

If语句不能理解两个相同的事物,这怎么可能呢?

情况:我只在字段中写入txfName字母 b,然后按下“确定”按钮。

代码:

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 语句程序向我显示变量相同之后。我不明白,这怎么可能。

4

3 回答 3

1

==比较看两个对象是否相同。当您处理字符串时,它们是对象,因此尽管它们可以具有相同的值,但它们可能没有相同的引用事件。你想.equals()改用。

有关更多详细信息,字符串在 java 中是特殊的,因为有一些内部工作具有字符串池。因此,在某些情况下,它==可能看起来确实有效,但在其他情况下可能不会。原因是字符串池尝试缓存最近使用的字符串以减少内存开销。反正.equals()就是你要找的。

于 2013-11-15T00:51:29.087 回答
1

对于你的第一个问题

String letter = "b";
boolean same = false;
if (letter.equals( txfName.getText())) {
 same = true;
}
return same;

如果txfName.getText()返回 "b"将返回 true

于 2013-11-15T00:56:15.130 回答
0

要比较 java 中的对象,请使用 .equals() 方法而不是“==”运算符

替换以下代码

if (letter == txfName.getText()) 

if (letter.equals(txfName.getText()))
于 2013-11-15T00:53:41.840 回答