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.
 }

2番目の例

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を使用して2番目の文字列のオブジェクトを作成し、コンテンツが異なる場合、オブジェクトを作成して異なる参照を割り当てます。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 の参照を比較します。そのため、同じ値を持つ文字列が異なるメモリ位置にあり、= 演算子の結果が false になる可能性があります。

equals または equalsIgnorecase を使用して、String 参照に格納されている値を比較します。

于 2013-03-10T09:59:08.120 に答える