可能重复:
如何比较 Java 中的字符串?
有人可以告诉我为什么会出现这种情况
if (lista.getString(0)=="username")
不返回真?我曾经尝试过
if (lista.getString(0)==lista.getString(0))
并且不工作,我知道这是一个语言问题。
可能重复:
如何比较 Java 中的字符串?
有人可以告诉我为什么会出现这种情况
if (lista.getString(0)=="username")
不返回真?我曾经尝试过
if (lista.getString(0)==lista.getString(0))
并且不工作,我知道这是一个语言问题。
为了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
来自 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"))
比较对象的正确方法是,
object1.equals(object2)
而 String 是 Java 中的一个对象,所以它对 String 也有同样的含义
s1.equals(s2)
例如:
if (lista.getString(0).equals("username"))