2011-02-14 47 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 2013-09-08 05:08:33

回答

16

是 - 你比較str1和str2中是否指的是完全相同的字符串對象,當你想比較字符串是否相等

if (str1.equals(str2)) 

==運營商將總是當應用於引用類型的變量時,比較引用而不是執行任何類型特定的相等性檢查。

+1

,你也可以做str1 .equalsIgnoreCase(str2) – 2011-02-14 10:42:52

5

我真的不知道你想要做什麼那裏,你在TextField噸輸入什麼,但你應該使用equals() - 方法

5

你檢查的身份測試字符串相等(== )但你實際上想檢查等於.equals())。

這是必要的,因爲,就像在現實世界中一樣,兩件事看起來可能是平等的。

如果您需要現在是否需要兩個變量參考相同的對象,請使用==。否則,如果您只想知道,如果兩個變量引用的對象的的狀態爲(又名「內容」),請使用equals方法。

2

==運算符比較對象引用,而.equals用於比較字符串!

相關問題