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))