Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么两个相同的字符串在if条件下不匹配。。。。?_Java - Fatal编程技术网

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

Java 为什么两个相同的字符串在if条件下不匹配。。。。?,java,Java,你能告诉我我在这个节目中哪里做错了吗 import java.awt.*; 导入java.applet.*; 导入java.awt.event.*; /**/ 公共类kk扩展小程序实现ActionListener { 按钮b; textfieldt; 字符串str1,str2; 公共void init() { b=新按钮(“提交”); t=新文本字段(20); 加(t); 添加(b); b、 addActionListener(此); } 已执行的公共无效行动(行动事件ae) { 尝试 { s

你能告诉我我在这个节目中哪里做错了吗

import java.awt.*;
导入java.applet.*;
导入java.awt.event.*;
/**/
公共类kk扩展小程序实现ActionListener
{
按钮b;
textfieldt;
字符串str1,str2;
公共void init()
{
b=新按钮(“提交”);
t=新文本字段(20);
加(t);
添加(b);
b、 addActionListener(此);
}
已执行的公共无效行动(行动事件ae)
{
尝试
{
str2=“mohit”;
str1=t.getText();
如果(str1==str2)
{
系统输出打印项次(“匹配”);
}
其他的
{
系统输出打印项次(“不匹配”);
}
}
捕获(例外e)
{
System.out.println(“捕获异常”);
}
}
}

不知道为什么str1和str2不匹配。

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


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

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


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

我不确定您在那里尝试做什么以及在
文本字段中输入什么,但您应该使用
equals()测试字符串相等性
-Method

我不确定您在那里想做什么以及在
TextField
t中输入什么,但是您应该使用
equals()
-Method

检查标识(
=
)来测试字符串是否相等,但实际上您想要检查相等(
.equals()

这是必要的,因为,就像在现实世界中一样,两件事情看起来是一样的

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

检查标识(
=
),但实际上您想检查相等(
.equals()

这是必要的,因为,就像在现实世界中一样,两件事情看起来是一样的


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

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

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

你也可以做str1。equalsIgnoreCase(str2)@Richard:真的。我假设OP目前只需要简单的等式:)好的,可以做得很好:)
str1.intern()==str2.intern()
(如果第二个字符串按所示初始化,那么可以是
str1.intern()==str2
)。但是这种方法很难使用。@Maxym:这仍然是比较两个参考。。。仅显示
intern()
的结果,而不是原始字符串。因为很多原因,这确实不是一种方法。是的,我的意思是我们使用“==”运算符,所以从视觉上看它看起来是相等的。实际上,这仍然是引用比较,这是事实,你也可以做str1。equalsIgnoreCase(str2)@Richard:的确。我假设OP目前只需要简单的等式:)好的,可以做得很好:)
str1.intern()==str2.intern()
(如果第二个字符串按所示初始化,那么可以是
str1.intern()==str2
)。但是这种方法很难使用。@Maxym:这仍然是比较两个参考。。。仅显示
intern()
的结果,而不是原始字符串。因为很多原因,这确实不是一种方法。是的,我的意思是我们使用“==”运算符,所以从视觉上看它看起来是相等的。实际上,这仍然是参考比较,这才是真正的可能重复的可能重复的
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 ");
        }
    }
}
if (str1.equals(str2))