下面是一個Java程序。該程序將創建多少個字符串對象
public String makinStrings() {
String s = 「Fred」;
s = s + 「47」;
s = s.substring(2, 5);
s = s.toUpperCase();
return s.toString();
}
如何找出在String池中創建了多少個String對象。我認爲有4個對象是 - 「Fred」,「Fred47」,「ed4」,「ED4」。這是正確的假設嗎?
下面是一個Java程序。該程序將創建多少個字符串對象
public String makinStrings() {
String s = 「Fred」;
s = s + 「47」;
s = s.substring(2, 5);
s = s.toUpperCase();
return s.toString();
}
如何找出在String池中創建了多少個String對象。我認爲有4個對象是 - 「Fred」,「Fred47」,「ed4」,「ED4」。這是正確的假設嗎?
對於Java版本7:
分配「弗雷德」開頭將不會創建新的對象,因爲它將取自literal pool
總結 - 3字符串已創建,每個方法調用。該字符串是一個對象,因此返回它不會創建新的 - 它通過引用完成。
爲什麼你認爲'toUpperCase()'不會創建一個新的字符串? – xehpuk
當然,它會 - 我已經被建議在參考文獻中沒有明確的信息。問題是重複的http://stackoverflow.com/questions/7370593/how-many-string-objects-will-be-created順便說一句,但我不能標記它的一些奇怪的原因 - 我編輯答案正確的一個(因爲我現在也不能刪除它......呃)。無論如何感謝您的警告 –
你正在使用什麼版本的java –
可能重複[將創建多少個字符串對象](http://stackoverflow.com/questions/7370593/how-many-string-objects-will-be-created) – xehpuk