[英]objects in String constant pool in java
public class NewClass {
public String makinStrings() {
String s = "Fred";
s = s + "47";
s = s.substring(2, 5);
s = s.toUpperCase();
return s.toString();
}
}
在上面的程序中創建了多少個對象? 轉換為大寫字符串后,我看到有4個對象,但是根據scjp書,答案是3個。 我不明白為什么只有三個對象
s = "Fred"
s = s+47;
=> s = Fred47
s = s.substring(2,5);
=> s = ed4
s = s.toUpperCase();
=> s = ED4
是3個對象
String s = "Fred"; // created in pool
s = s + "47"; // created in heap
s = s.substring(2, 5); // created in heap
s = s.toUpperCase(); // created in heap
如果看到substring()
和toUpperCase()
的源,它將返回一個新字符串,並帶有s + "47";
由於s
的值是在運行時確定的,因此它將創建新的字符串,因此共有3個對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.