我遇到了一个问题,我编写了一个方法来搜索名为Item的类。无论我搜索什么,它都返回null。我相信我遇到了可变范围的问题:
public Item search(String itemSearch) {
Item search = null;
for(Item i : items){
if (i.getName() == itemSearch){
search = i;
}
}
return search;
}
getName方法返回项的name属性。无论Item搜索总是为null,我猜这是由于变量范围而且并没有为每个循环分配?为什么这个方法总是为空?
谢谢
答案 0 :(得分:4)
你不能使用==来比较java中两个字符串的内容。您需要使用.equals()
方法
使用==只会比较两个字符串的地址,而equals
会比较它们的值。
答案 1 :(得分:2)
您正在使用==比较字符串。您应该使用equals()方法。 E.G
i.getName().equals(itemSearch)
而不是循环整个循环使用if语句中的return i,而不是将i分配给搜索然后返回搜索。