2012-07-19 2 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

문자열 (또는 모든 객체)을 ==으로 비교하지 마십시오.

if(s == "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

아, 나는 이것을 몰랐다. 고맙습니다. –

+0

걱정하지 마십시오. 처음에는 누구나 문자열을 이렇게 비교합니다 :) – Pshemo

5

귀하의 문제에 예를 들어

, 참조가 동일한 개체가 포함되어있는 경우 객체가 같은 값을 포함하지 않을 경우 확인하는 데 사용됩니다 s.equals("Update")

== 사용 그것과 함께

if (s.equals("Update")) 

== 내용 (String과 같은)을 처리 할 때 참조가 비교되지만 content/value는 비교되지 않습니다.

관련 문제