有人见过以下语句运行false吗?
String BloodyHell = "Unbelievable";
if (BloodyHell == BloodyHell) >> false
虽然不是血腥地狱,但我得到的是:|-,-|
或|o,-|
或|-,o|
或|o,o|
或XXXX
。
但这些都不是真的。虽然调试确切的事情仍然是错误的。
有人请帮帮我。这是片段:
public String doStats()
{
String[] pattern = splitPattern();
for (int i = 0; i < pattern.length; i++)
{
if (pattern[i] == "|-,-|")
frontClosed++;
if (pattern[i] == "|o,-|")
left++;
if (pattern[i] == "|-,o|")
right++;
if (pattern[i] == "|o,o|")
frontOpened++;
if (pattern[i] == "XXXX")
noFace++;
}
}
答案 0 :(得分:3)
在Java中,您应该使用String#equals
方法来比较字符串值而不是==
。 ==
运算符会比较对象引用以查看它们是否是同一个对象,这就是您继续获取false
的原因。即使字符串的内容是等效的,对象引用也是不同的。
if (pattern[i].equals("|-,-|"))
答案 1 :(得分:3)
==
和equals()
之间存在差异。
比较字符串时,您想使用equals()
; ==
用于比较它们在内存中是否相同。