2011-02-14 46 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用于比较字符串!

相关问题