4

文字列の不変性を考えると、次のようなものだと理解しています

String a="";
for(int i=0;i++<9;)
    a+=i;

最初に文字列がインスタンス化されて文字列プールに入れられ、次にa+=i新しい文字列が作成され (最初のループで0a )、によって参照され、前の文字列がガベージ コレクションの対象となるため、非常に非効率的です。そして、これは9回起こります。

より良い方法は次を使用することStringBuilderです:

StringBuilder a=new StringBuilder("");
for(int i=0;i++<9;)
    a.append(i);

newしかし、キーワードを使用して文字列をインスタンス化すると、舞台裏で何が起こるの でしょうか?

String a=new String("");
for(int i=0;i++<9;)
    a+=i;

この場合a、インターンされないことはわかっていますが (文字列プールにはありません)、それでも不変ですか? a+=iこのとき、指示は何をしますか?動作は最初の例と同じですか?

4

2 に答える 2