-1

文字列プールに実際に含まれているものについて少し混乱しています。

と言うときString s = "abc"、これはコンパイル時に文字列オブジェクトが文字列プールに置かれるということですか、それとも置かれるのは参照ですか?

4

6 に答える 6

1

文字列プールは、文字列リテラルの単なるキャッシュです。文字列リテラルを文字列参照に割り当てるたびに、文字列プールでリテラルが検索され、参照変数に割り当てられます。String s="abc"JVM では、文字列プールでリテラルを検索し"abc"、その参照を参照変数に割り当てますs

                  ____________
          refers |           | 
String s ------->|   abc     |<---- String Pool 
                 |___________|       
于 2013-07-17T12:48:26.280 に答える
1

ステートメントString s = "abc"は、abcまだ存在しない場合、文字列定数プールに作成されます。存在する場合は、参照が返されます。ここで、文字列定数プールに関する優れたチュートリアルを見つけることができます。

http://www.thejavageek.com/2013/06/19/the-string-constant-pool/

于 2013-07-17T12:44:01.170 に答える
0

ここで「abc」はコンパイル時に定義されるため、自動的にインターンされます。したがって、この文字列オブジェクトは文字列インターン プールに移動します。そこにすでに存在する場合は、その参照が返されます。文字列インターンプールは、Java 7 以降のメイン Java ヒープの一部です (ヒープにオブジェクトが含まれることがわかっています)。

于 2013-07-17T13:20:33.163 に答える