Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 条件==在字符串和常量之间_Java_Android - Fatal编程技术网

Java 条件==在字符串和常量之间

Java 条件==在字符串和常量之间,java,android,Java,Android,可能重复: 有人可以告诉我为什么会出现这种情况 if (lista.getString(0)=="username") 不返回真值吗?我曾经试过 if (lista.getString(0)==lista.getString(0)) 而且不工作,我知道这是一个语言问题。对于String比较,始终使用equals() 使用==,您将最终比较引用,而不是值 一个简单的片段进一步澄清: String s1 = "Hello"; String s2 = new String(s1); System

可能重复:

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

if (lista.getString(0)=="username")
不返回真值吗?我曾经试过

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

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

对于
String
比较,始终使用
equals()

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

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

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

=
测试引用相等性

.equals
测试值是否相等

因此,您应该使用:

if (lista.getString(0).equals("username"))
请参见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.
使用


比较对象的正确方法是

object1.equals(object2)
字符串在Java中是一个对象,所以它对字符串也有同样的含义

s1.equals(s2)
例如:

if (lista.getString(0).equals("username"))
好了:
s1.equals(s2)
if (lista.getString(0).equals("username"))