文字列の不変性を考えると、次のようなものだと理解しています
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
このとき、指示は何をしますか?動作は最初の例と同じですか?