String にはほとんど疑問がありません。
インターネット上のさまざまな記事からの理解に基づいてこれを書いているため、特定のステートメントが間違っている可能性がありますが、ご容赦ください.
String str1 = new String ("newStr1");を実行する と、. これにより、2 つの文字列オブジェクトが作成されます。1 つは通常のヒープに、もう 1 つは文字列プールにあります。なぜ 2 つのオブジェクトとその使用法? プールに1つだけではないのはなぜですか?
オブジェクトをString str2 = new String("newStr2").intern();として作成するとします。. これは、同様の (意味的に等しい) オブジェクトがプールにあるかどうかをチェックし、そのオブジェクトへの参照を提供します。ない場合は、ヒープではなくプールに作成しますか? もしそうなら、メモリを節約するためにほとんどの場合インターンを使用する必要がありますか? ただし、パフォーマンスに少し影響します。したがって、基本的にはString str2 = "newStr2"; です。(interning は文字列リテラルに対して暗黙的です)
Java-6 の後、文字列プールは perm gen 領域からヒープ領域に移動しましたか? つまり、基本的にヒープとして 1 つの領域しか持たないのですか、それとも文字列プールはヒープ内の別のセクションとして存在するのでしょうか? 別のセクションでない場合でも、2 つのオブジェクトが作成されますか?