使用substring()看似不相等的字符串

Gim*_*mli 1 java substring equivalence

可能重复:
Java String.equals与==

我是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);

    }
}
Run Code Online (Sandbox Code Playgroud)

Ano*_*ous 8

除非您想比较实际参考,否则不要(永远)==用于比较.您需要使用该.equals()方法.因为String你可以考虑写作"abcd".equals(myStr)- 因为myStr可能是null.

请注意,在Java中的字符串被拘留,并==有时会给出正确的结果,但绝不意味着你应该依赖于这个.


SLa*_*aks 6

== 按引用比较对象,而不是按值.

您有两个不同的字符串对象包含相同的值,因此==返回false.

你需要打电话.equals().