-6

可能重复:
如何比较 Java 中的字符串?

有人可以告诉我为什么会出现这种情况

if (lista.getString(0)=="username")

不返回真?我曾经尝试过

if (lista.getString(0)==lista.getString(0))

并且不工作,我知道这是一个语言问题。

4

4 回答 4

2

==测试参考相等。

.equals测试值相等。

因此,您应该使用:

if (lista.getString(0).equals("username"))

请参阅如何比较 Java 中的字符串?

于 2012-06-09T16:51:37.287 回答
1

为了String比较总是使用equals().

if (lista.getString(0).equals("username"))

使用==,您最终将比较引用,而不是值。

一个简单的片段进一步澄清:

String s1 = "Hello";
String s2 = new String(s1);
System.out.println(s1.equals(s2)); // true because values are same
System.out.println((s1 == s2)); // false because they are different objects
于 2012-06-09T16:51:34.323 回答
0

来自 Java 技术

Since Strings are objects, the equals(Object) method will return true if two Strings have
the same objects. The == operator will only be true if two String references point to the  
same underlying String object. Hence two Strings representing the same content will be  
equal when tested by the equals(Object) method, but will only be equal when tested with 
the == operator if they are actually the same object.

采用

if (lista.getString(0).equals("username"))
于 2012-06-09T16:52:49.170 回答
0

比较对象的正确方法是,

object1.equals(object2)

而 String 是 Java 中的一个对象,所以它对 String 也有同样的含义

s1.equals(s2)

例如:

if (lista.getString(0).equals("username"))
于 2012-06-09T16:57:29.743 回答