我是java新手,所以不要指望事情变得容易,但这让我感到震惊。 为什么if语句不能正确评估:
import javax.swing.JFrame;
import javax.swing.JTextArea;
public class StringMystery extends JFrame {
JTextArea txt = new JTextArea();
String string1 = "abcde";
String string2 = string1.substring(0,4);
public StringMystery() {
setLayout(null);
txt.setBounds(20, 20, 100, 100);
add(txt);
txt.setText(string2);
//string 2 is definitely equal to "abcd" but this doesn't evaluate:
if (string2 == "abcd"){
txt.setText("string2 = abcd");
}
}
public static void main(String[] args) {
StringMystery jtxt = new StringMystery();
jtxt.setSize(200,200);
jtxt.setTitle("String Mystery");
jtxt.setVisible(true);
}
}
答案 0 :(得分:8)
不要(永远)使用==
进行比较,除非您想比较实际参考。您需要使用.equals()
方法。对于String
,您可以考虑撰写"abcd".equals(myStr)
- 因为myStr可能是null
。
请注意,在Java字符串中,interned和==
有时可能会给出正确的结果,但绝不应该依赖它。
答案 1 :(得分:6)
==
按引用比较对象,而不是按值。
您有两个不同的字符串对象包含相同的值,因此==
返回false。
您需要致电.equals()
。