Java 使用substring()的字符串似乎不相等
可能重复:Java 使用substring()的字符串似乎不相等,java,substring,equivalence,Java,Substring,Equivalence,可能重复: 我是java新手,所以不要期望事情变得容易,但这让我完全震惊。 究竟为什么if语句不能正确评估: import javax.swing.JFrame; import javax.swing.JTextArea; public class StringMystery extends JFrame { JTextArea txt = new JTextArea(); String string1 = "abcde"; String string2 = str
我是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);
}
}
=
通过引用而不是值来比较对象
您有两个包含相同值的不同字符串对象,因此=
返回false
您需要调用
.equals()
=
通过引用而不是通过值来比较对象
您有两个包含相同值的不同字符串对象,因此=
返回false
您需要调用.equals()
除非您想比较实际引用,否则不要(永远)使用=
进行比较。您需要使用.equals()
方法。对于=
有时可能会给出正确的结果,但决不能依赖于此 除非您想比较实际参考,否则不要(曾经)使用=
进行比较。您需要使用.equals()
方法。对于请注意,在Java中,字符串是和
=
有时可能会给出正确的结果,但决不能依赖于此 惊人的快速反应。谢谢所有OOPS语言都是这样的吗?为什么他们不能让它工作= = @ GimLI:No C++和C++支持操作符重载,JavaScript处理字符串特别快。谢谢所有OOPS语言都是这样的吗?为什么他们不能让它工作= = @ GimLi:不,C++和C++支持操作符重载,JavaScript处理字符串。对于我这样的新手来说,找到这个线程的语法是Srime2..Abdies(“ABCD”),对于像我这样的新手,发现这个线程的语法是StRIG2..Erras(ABCD)。其他百万字符串的副本==问题其他百万字符串的副本==问题