2011-02-14 7 views
1

이 프로그램에서 내가 실수 한 부분을 말해 줄 수 있습니까 .조건이 일치하면 두 개의 동일한 문자열이 일치하지 않는 이유는 무엇입니까?

import java.awt.*; 
import java.applet.*; 
import java.awt.event.*; 
/*<Applet code="kk" height=400 width=400></applet>*/ 
public class kk extends Applet implements ActionListener 
{ 
    Button b; 
    TextField t; 
    String str1,str2; 
    public void init() 
    { 
     b=new Button("submit"); 
     t=new TextField(20); 
     add(t); 
     add(b); 
     b.addActionListener(this); 
    } 
    public void actionPerformed(ActionEvent ae) 
    { 
     try 
     { 
      str2="mohit"; 
      str1=t.getText(); 
      if(str1==str2) 
      { 
       System.out.println("matched"); 
      } 
      else 
      { 
       System.out.println("not matched"); 
      } 
     } 
     catch(Exception e) 
     { 
      System.out.println("Exception caught "); 
     } 
    } 
} 

왜 str1과 str2가 일치하지 않는지 모릅니다.

+0

[Java의 문자열을 어떻게 비교합니까?] (http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) – Makoto

답변

16

예 - 당신은 str1과 str2와는 동일한 문자열 개체를 참조 여부를 비교하고, 당신은 문자열이 동일한 여부를 비교 원하는 때 항상

if (str1.equals(str2)) 

== 운영자 것이다 은 참조 유형의 변수에 적용될 때 모든 유형별 동일성 검사를 수행하지 않고 참조를 비교합니다.

+1

그리고 str1을 수행 할 수도 있습니다 .equalsIgnoreCase (str2) –

+0

@ 리차드 : 실제로. 방공호가 순간적으로 단순한 평등을 원한다고 가정하고 있습니다 :) –

+0

좋은 가격으로 할 수 있습니다 :)'str1.intern() == str2.intern()'(두 번째 문자열이 다음과 같이 초기화되면 'str1.intern() == str2' 일 수 있습니다). 그러나이 방법은 함께 가기가 까다로워요. – Maxym

5

당신이이 일을하려고하고 당신이 TextField톤에 입력하는지 정말 모르겠어요,하지만 당신은 정체성equals() -Method

5

귀하의 검사를 사용하여 문자열 어떤지를 테스트해야합니다 (==) 실제로는 동등한 (.equals())을 확인하려고합니다.

현실 세계와 마찬가지로 두 가지가 동일하게 보일 수 있기 때문에 이는 필수입니다.

두 변수가 같은 개체을 참조하는지 여부를 알아 보려면 지금 ==을 사용해야합니다. 그렇지 않으면 두 변수가 같은 상태 인 (별칭은 "내용") 인 객체를 참조하는 경우 equals 메서드를 사용하면됩니다.

2

== 연산자는 객체 참조를 비교하지만 .equals는 문자열 비교에 사용됩니다!

관련 문제