0

これをいくつかの異なる方法でテストしました。比較sする文字列は、ログ ファイルに表示される文字列とまったく同じです。アポストロフィは、スペースがないことを確認するためのものです。何が起こっているか知っている人はいますか?

import java.lang.reflect.Method;
import android.util.Log;

public class Button {
    public Button () {
        for(Method m1:MyOtherClass.class.getMethods()) {
        String s = m1.getName();
            if(s == "Update") {
                Log.i("result","true");
            }
            Log.i("test", "'" + s + "'");
        }
    }
}
4

4 に答える 4

5

あなたの問題は次のとおりです。

if(s == "Update")

に置き換えます

if (s.equals("Update"))

== は、コンテンツ/値ではなく、オブジェクト (文字列など) を扱うときに参照を比較します。

于 2012-07-19T01:05:36.447 に答える
1

文字列 (または任意のオブジェクト) を で比較しないでください==。使用するs.equals("Update")

==オブジェクトに同じ値が含まれているかどうかではなく、参照に同じオブジェクトが含まれているかどうかを確認するために使用されます。

例えば

Integer i1=new Integer(1);
Integer i2=new Integer(1);
Integer i3=i1;
//checking references
System.out.println(i1==i2);//false
System.out.println(i1==i3);//true

//checking values
System.out.println(i1.equals(i2));//true
System.out.println(i1.equals(i3));//true
于 2012-07-19T01:05:32.560 に答える
1

Stringクラスから equals() メソッドを使用します。

于 2012-07-19T01:06:05.017 に答える
0

使用法 "Update".equals(s) これは適切な値の比較を行います。

于 2012-07-19T01:05:20.400 に答える