2017-07-11 14 views
0

文字列s1 = new String( "string")は、Stringプール内にjava.oneとヒープ内に2つのオブジェクトを作成します。今の場合、私はこれの後に別の文を書くと、s2 = "string"のようになります。 Stringプール内に別のオブジェクトを作成するか、前のオブジェクトの参照を返しますか?java文字列プールエントリとヒープエントリメカニズム

答えて

2

String s2 = "string";は、文字列プールからオブジェクトを返します。

String s1 = new String("s"); 
    String s2 = "s"; // from pool 
    String s3 = "s"; // from pool 
    System.out.println(s1 == s2); // false 
    System.out.println(s3 == s2); // true 
+0

新しいString( "string")を呼び出して作成されたオブジェクトですか? –

+0

"string" - 文字列プールに入れられる最初のオブジェクトです。新しいString( "string") - 2番目のオブジェクトです(文字列プールからではありません)。 s2はstring poolのオブジェクトに割り当てられます。 –