-3

以下の私のコード

public class EqualsComMetod_Operator {

  public static void main(String[] args) {

    String s1=new String("Raja");
    String s2=new String("Raja");
    System.out.println("s1==s2::"+s1==s2);
    // Here the text s1==s2:: not printed on my console why??
  }
}

出力:

間違い

オブジェクトを参照/アドレスとして比較し、次のように印刷しようとしています:

s1==s2::偽

しかし、直接偽を示しています。なんで?

4

3 に答える 3

-3

を使用して 2 つの文字列を作成するnewと、それらは異なるオブジェクトになります。文字列に同じ内容が含まれていても、等価演算子は常に false を返します。これは、同じオブジェクトを参照するためにコンパイラが最適化するリテラル文字列とは異なります。

String s1 = new String("Raja");
String s2 = new String("Raja");
System.out.println(s1 == s2); // false

String s3 = "Raja";
String s4 = "Raja";
System.out.println(s3 == s4); // true
于 2014-09-07T06:31:47.970 に答える