为什么两个相同的字符串在if条件下不匹配....?

时间:2011-02-14 10:38:52

标签: java

你能告诉我这个程序在哪里犯了错误吗?

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不匹配。

4 个答案:

答案 0 :(得分:16)

是 - 当你希望比较字符串是否相等时,你正在比较str1和str2是否引用完全相同的字符串对象:

if (str1.equals(str2))

==运算符始终总是比较引用,而不是在应用于引用类型的变量时执行任何特定于类型的相等性检查。

答案 1 :(得分:5)

我不确定你在那里做什么以及你在TextField中输入了什么,但你应该使用equals() - 方法

测试字符串相等性

答案 2 :(得分:5)

您检查身份==),但实际上您想要检查相等.equals())。

这是必要的,因为,就像在现实世界中,两件事情看起来可能相同。

如果您现在需要两个变量引用同一个对象,请使用==。否则,如果您只想知道,如果两个变量引用具有相同状态(也称为“内容”)的对象,请使用equals方法。

答案 3 :(得分:2)

==运算符比较对象引用,而.equals用于比较字符串!