38

特定の問題で作成されるオブジェクトの数についてインタビューで尋ねられました。

String str1 = "First";
String str2 = "Second";
String str3 = "Third";
String str4 = str1 + str2 + str3;

私は、文字列プールに6 つのオブジェクトが作成されると答えました。

3 は、3 つの変数のそれぞれに対応します。
1はstr1 + str2(としましょうstr)用です。
1 はstr2 + str3.
1 はstr + str3( str = str1 + str2) です。

私が出した答えは正しいですか?そうでない場合、正しい答えは何ですか?

4

7 に答える 7

2

4 つの文字列オブジェクトが文字列定数プールに作成されます。リテラルの場合は 3 つ、連結の場合は 1 つです。

使用する場合

String s1 = new String("one")

定数プールに 1 つ、ヒープ メモリに 1 つの 2 つのオブジェクトが作成されます。

を定義すると:

String s1 = "one";
String s2 = new String("one");

定数プールに 1 つ、ヒープ メモリに 1 つの 2 つのオブジェクトが作成されます。

于 2019-08-25T13:35:48.703 に答える