私はこの質問をした:どのように多くの参照変数は、以下のコードのprintlnの声明より前に作成されたどのように多くのStringオブジェクトと上記の詳細に基づいてJavaはどのようにメモリ内のStringオブジェクトを処理しますか?
String s = "abc"; // creates one String object and one
// reference variable
In this simple case, "abc" will go in the pool and s will refer to it.
String s = new String("abc"); // creates two objects,
// and one reference variable*
?
String s1 = "spring ";
String s2 = s1 + "summer ";
s1.concat("fall ");
s2.concat(s1);
s1 += "winter ";
System.out.println(s1 + " " + s2);
私の答え2つの参照変数、S1、S2があり、このコードフラグメントの結果は、春冬春夏
ある ました。 「春」、「夏」(紛失)、「春夏」、「秋」(迷子)、「春 秋」、「春夏春」の合計8つのStringオブジェクト が作成されました。 (紛失)、「冬」(紛失)、「春冬」(この時点で「春」は失われている)。
このプロセスでは、8つのStringオブジェクトのうち2つだけが失われません。
正しいですか?
知るには良い何か:http://stackoverflow.com/questions/7663252/java-string-concat-in-stringbuilder-call/この質問に対する私の答えは間違っていたことに注意してください... – Gevorg