0
if (cevabb.getText().toString() == cev0.getText().toString()) {     
    Toast.makeText(test.this,"aaaa", Toast.LENGTH_LONG).show();     
} else {
    Toast.makeText(test.this,"bbb", Toast.LENGTH_LONG).show();
}

cevabb.getText().toString()="xxx"cev0.getText().toString()="xxx",但消息显示“bbb”

4

4 回答 4

4

用于比较的String.equals()方法String,因为==比较参考文献,而equals()用于内容比较。

if(string1.equals(string2)){
    // DO Something
}

你的情况:-

if(cevabb.getText().toString().equals(cev0.getText().toString())){
    // DO Something
}
于 2013-03-10T09:53:08.533 回答
4

像这样使用。

if (cevabb.getText().toString().equals(cev0.getText().toString())) {

....

}

== 和 equals() 方法之间的区别。

== 用于比较参考。和 equals 方法检查字符串变量的内容。

例子。

第一个例子

String s1 = "FirstString";
String s2 = "FirstString";

 if(s1 == s2) {
    //This condition matched true because java don't make separate object for these two string. Both strings point to same reference.
 }

第二个例子

String s1= "FirstString";
String s2 = new String("FirstString");

if(s1.equals(s2)) {
  //This condition true because same content.
}

if(s1 == s2) {
  //This condition will be false because in this java allocate separate reference for both of them
}

结论:Java 检查字符串是否存在。如果我们使用 new 创建第二个字符串的对象并且具有不同的内容,那么它会创建对象并分配不同的引用,如果我们不使用 new 创建对象并且具有相同的内容,那么它分配与第一个字符串相同的引用包含.

于 2013-03-10T09:56:03.947 回答
3

cevabb.getText().toString()==cev0.getText().toString()

必须

cevabb.getText().toString().equals(cev0.getText().toString())

或者如果您想作为对象进行比较

采用intern()

cevabb.getText().toString().intern()==(cev0.getText().toString())

于 2013-03-10T09:53:24.820 回答
2

= 运算符比较内存中 String 的引用。因此,具有相同值的 String 可能位于不同的内存位置,而 = 运算符给出的结果为 false。

使用 equals 或 equalsIgnorecase 以便比较存储在 String 引用中的值。

于 2013-03-10T09:59:08.120 回答