4

main(String[] args)私の例では、私が理解できない他の文字列配列との間に違いがあるようです。

public class TestArgs 
{
public static void main(String[] args) {
    String[] x = {"1","2","3"};
    System.out.print( x[2] == "3" );
    System.out.print( args[2] == "3" );
}}

このプログラムを次のように実行します。

java TestArgs 1 2 3

出力は「truetrue」であると予想されますが、代わりに「truefalse」が表示されます

誰かが違いを教えてくれませんか、それとも私は本当にばかげたことをしているだけですか...

4

3 に答える 3

9

Java では、"test".equals("test")文字列の等価性をテストするために使用する必要があります;)

文字列はオブジェクトであり、オブジェクトは同じではなく、同じ値を持つだけです

于 2012-09-04T03:02:41.823 に答える
5

これは、 を使用するときにオブジェクトの参照を比較しているためです==。を比較するときは、代わりに をString使用します。This SO answerは、その理由をよりよく説明しています。.equals()==

したがって、コードは次のようになります。

public class TestArgs {
    public static void main(String[] args) {
        String[] x = {"1","2","3"};
        System.out.print("3".equals(x[2]);
        System.out.print("3".equals(args[2]));
    }
}

また、これはこの回答とは直接関係ありませんargs。それを使用して操作を行う前に、長さを確認することをお勧めします。その理由は、エンド ユーザーが値を提供していない可能性があるためです。args[2]

于 2012-09-04T03:03:38.187 に答える
2

演算子は==参照によってオブジェクトを比較します。

于 2012-09-04T03:02:51.327 に答える