我有点麻烦。问题是当我试图比较2个字符串(类型字符串)时,运算符'=='返回FALSE,但实际上字符串是相等的。 这是代码及其问题:
//before the following code I filled the "LinkedList <String> command" and there is
//a node with value of args[0]
String deal="";
Iterator it = commands.listIterator();
if(it.hasNext() == true)
{
if(it.next() == args[0])
{
deal += it.next();
it.hasNext();
break;
}
}
谢谢!!!
答案 0 :(得分:1)
比较两个字符串时使用.equals。所以使用
(it.next()).equals(args[0])
答案 1 :(得分:1)
要比较两个字符串,你应该使用方法equals()或equalsIgnoreCase()。
在你的情况下:
if(it.next().equals(args[0]))
如果两个对象是同一个对象,内存中的地址相同,则operator ==返回true。
答案 2 :(得分:1)
您必须使用.equals
方法:
String deal="";
Iterator it = commands.listIterator();
if(it.hasNext() == true)
{
String next = it.next();
if(next.equals(args[0]))
{
deal += next;
break;
}
}
注意,.next()
返回一次值并将其内部光标移动到下一个值。
==
无法用于String
,因为如果两侧都有相同的对象实例,则==
为真。相同的字符串内容可以在许多String
个实例中。
答案 3 :(得分:1)
有两种比较字符串的方法。
在您的代码中,您正在比较it.next() & args[0]
引用的引用,而您应该使用it.next().equals(args[0])
来比较两者的值。
答案 4 :(得分:0)
如果使用==来比较两个int值,那么它将比较这两个值,因为int是原始数据类型。如果使用“==”比较String对象,则检查两个String引用是否都引用相同的String对象。它不考虑String对象的值。
如果要比较String对象的值,则必须使用String类的equals()。此方法比较两个String对象的内容。