1

重複の可能性:
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);

    }
}
4

2 に答える 2

8

実際の参照を比較したい場合を除き、比較に使用しないでください。メソッド==を使用する必要があります。.equals()そして、String書くことを検討するかもしれません"abcd".equals(myStr)- myStr は潜在的にnull.

Java の文字列はインターンされており==、正しい結果が得られる場合もありますが、決してそれに頼るべきではないことに注意してください。

于 2012-04-20T12:33:17.190 に答える
6

==オブジェクトを値ではなく参照で比較します。

同じ値を含む 2 つの異なる文字列オブジェクトがあるため、==false を返します。

に電話する必要があります.equals()

于 2012-04-20T12:32:56.213 に答える