Tôi đã hỏi câu hỏi này:Java xử lý các đối tượng String trong bộ nhớ như thế nào?
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*
Dựa trên thông tin chi tiết trên có bao nhiêu đối tượng String và bao nhiêu biến tài liệu tham khảo đã được tạo ra trước khi báo cáo kết quả println dưới mã?
String s1 = "spring ";
String s2 = s1 + "summer ";
s1.concat("fall ");
s2.concat(s1);
s1 += "winter ";
System.out.println(s1 + " " + s2);
câu trả lời của tôi là Kết quả của đoạn mã này là đông xuân mùa xuân mùa hè
Có hai biến tham khảo, s1 và s2. Có tổng cộng tám đối tượng String được tạo như sau: "mùa xuân", "mùa hè" (mất), "mùa xuân mùa xuân", "mùa thu" (mất), "mùa xuân mùa thu" (mất), "mùa xuân hè xuân" (mất), "mùa đông" (bị mất), "mùa xuân mùa đông" (tại thời điểm này "mùa xuân" bị mất).
Chỉ hai trong số tám đối tượng String không bị mất trong quá trình này.
Có đúng không?
Điều gì đó cần biết: http://stackoverflow.com/questions/7663252/java-string-concat-in-stringbuilder-call/ Lưu ý rằng câu trả lời của tôi cho câu hỏi này là sai ... – Gevorg