2012-07-19 64 views
0

我已經測試過幾種不同的方法。我比較s的字符串與日誌文件中顯示的字符串完全相同。撇號是爲了確保沒有空格。任何人都知道發生了什麼事?Java Method.getName()與字符串不匹配

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 + "'"); 
     } 
    } 
} 

回答

0

使用 "Update".equals(s) 這確實應有的價值比較。

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 
+0

啊,我不知道這個。謝謝。 – 2012-07-19 01:08:13

+0

別擔心。大家都是這樣比較字符串:) – Pshemo 2012-07-19 01:11:43

5

你的問題是:

if(s == "Update") 

更換它與

if (s.equals("Update")) 

==比較引用時處理對象(如字符串),而不是內容/值。