1

調べていたらSCJP、一冊の本に一行見つけました。

String s = new String("abc");

そして、上の行に2つのオブジェクトが作成されると書かれていました。ワンオンHEAPとワンオンSTRING POOL

私はそこで与えられた宣言に満足していません。2 つのオブジェクトが作成される理由を誰かに理解してもらえますか?

前もって感謝します。

4

4 に答える 4

4

著者は正しいです。文字列リテラルを使用するときはいつでも、そのリテラルは最初に定数プールに移動します。

したがって、定数プールに「abc」が作成されます。

そして、新しいキーワードを使用するとs、ヒープ上に作成されたという新しいオブジェクトが呼び出されます。

于 2015-10-01T10:58:03.323 に答える
2

リテラル"abc"が作成され、インターンされます (「文字列プール」)。

オペレーターは、インターンされていないnew新しいものを作成します。String

于 2015-10-01T10:58:09.643 に答える
1

著者は正しいです:

  • 「abc」リテラルの文字列プールに 1 つのオブジェクトが作成されます。と
  • new String(...) のヒープに別のオブジェクトが作成されます
于 2015-10-01T10:59:09.250 に答える
1

オブジェクト 1 -"abc"

オブジェクト 2 -new String("abc")

于 2015-10-01T11:00:22.660 に答える