java 相同字符串比较不成功

xiao_song_shu
  • 29

1.如以下代码和描述,明明结果有相同的字符串,但是在if中写 == 无结果,写!= 却有结果,请问这是什么原因?HashMap实例hm中key值为大王,小王,中王,当我输入大王时,程序会输出大王,大王,小王,中王,但是却没执行if语句。
public void mouseExited(MouseEvent e)

{
    Object obj = e.getSource();
    //if (obj)
    if (obj == jtf_name)
    {
        String str = jtf_name.getText();
        System.out.println(str);
        for (String key:hm.keySet())
        {
            System.out.println(key);
            if (str == key)
            {
                System.out.println(888);
                JOptionPane.showMessageDialog(contentPane, "姓名不能重复", 
                        "Error", JOptionPane.ERROR_MESSAGE);
                break;
            }
        }
    }
}
回复
阅读 1.2k
1 个回答

试试equals方法
这里面涉及到==与equals的区别, ==表示比较两个对象的地址值 equals 表示 比较两个对象的结果值
可以尝试运行如下代码

    String a = new String("test");
    String b = new String("test");
    System.out.println(a.equals(b));
    System.out.println(a==b);

比较结果

宣传栏