-4

私はJava構文を持っています。申し訳ありませんが、なぜこれが起こるのかまだわかりません。

public class TestString {
  public static void main(String [] args){
    int i=-1;
    String a=((Object)i).toString();
    if(a=="-1"){
        System.out.println("Same");
    }else{
        System.out.println("Not");
    }
  }
}

そして、結果は「そうではありません」という問題は、オブジェクトの -1 文字列が -1 int と異なるのはなぜですか?

4

5 に答える 5

5

.equals()比較するには文字列で使用する必要があります。

このような方法でオーバーライドされた String の equal メソッド。

試す

public class TestString {
  public static void main(String [] args){
    int i=-1;
    String a=((Object)i).toString();
    if(a.equals("-1")){
        System.out.println("Same");
    }else{
        System.out.println("Not");
    }
  }
}
于 2013-09-06T08:37:20.143 に答える
0

オブジェクトの等価性ではなく、参照の等価性を使用しています。

"-1"リテラル テーブルには、新しく割り当てられた とは異なるヒープ アドレスがあるため、aを返しますfalse

なんらかの理由でString、同じ値を共有する多くのオブジェクトを割り当て、代わりに参照によってテストしたい場合は、次の使用を検討してString#intern()ください。

final String a = [...].intern(); // allocated
if (a == SOME_INTERNED_STRING_1) {
  [...]
else if (a == SOME_INTERNED_STRING_2) {
  [...]
}
于 2013-09-06T08:39:13.933 に答える
0

文字列は .equals() メソッドで比較する必要があります。

于 2013-09-06T08:37:23.977 に答える
0

==

あなたの場合は同じではない参照を比較するので、文字列値を比較したい場合は使用します

.equals() メソッド

于 2013-09-06T08:41:53.323 に答える
0

== 演算子は、2 つのオブジェクトがまったく同じオブジェクトかどうかを確認します。equals メソッドを使用して、値が等しいかどうかを確認できます

于 2013-09-06T08:44:12.907 に答える