你能告诉我这个程序在哪里犯了错误吗?
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 :(得分:16)
是 - 当你希望比较字符串是否相等时,你正在比较str1和str2是否引用完全相同的字符串对象:
if (str1.equals(str2))
==
运算符始终总是比较引用,而不是在应用于引用类型的变量时执行任何特定于类型的相等性检查。
答案 1 :(得分:5)
我不确定你在那里做什么以及你在TextField
中输入了什么,但你应该使用equals()
- 方法
答案 2 :(得分:5)
您检查身份(==
),但实际上您想要检查相等(.equals()
)。
这是必要的,因为,就像在现实世界中,两件事情看起来可能相同。
如果您现在需要两个变量引用同一个对象,请使用==
。否则,如果您只想知道,如果两个变量引用具有相同状态(也称为“内容”)的对象,请使用equals
方法。
答案 3 :(得分:2)
==运算符比较对象引用,而.equals用于比较字符串!