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 回答