[英]Inside for-loop, how many objects will be created in java?
以下代碼將創建多少個對象:
for (int i= 0;i<10; i++){
String a = new String("abc");
}
for (int i= 0;i<10; i++){
String a = "abc";
}
第一個循環將創建10個不同的對象,第二個循環將僅具有一個對象,因為文字對象字符串在編譯時僅創建一次,並且每次請求編譯器都將返回相同的引用。
在第一個for循環中(因為已經使用了新的String),將創建10個對象;在第二個for循環中,僅將創建一個對象並將其重用(因為它將存儲在String池中)。
0,因為未使用字符串a,因此jvm將跳過語句
"abc"
並將其放入字符串池 String a = new String("abc")
將在字符串池中找到"abc"
字符串,創建新的對象字符串,並且不將其放入字符串池 總共將創建11個字符串,並且只有一個"abc"
將放入字符串池
for (int i= 0;i<10; i++){
String a = new String("abc");
}
"abc"
並將其放入字符串池。 String a = "abc"
將在字符串池中找到存在的字符串"abc"
,而引用a
將指向相同的字符串對象"abc"
。 將總共創建1個字符串放入字符串池
for (int i= 0;i<10; i++){
String a = "abc";
}
總共11個對象將在堆中創建10個,在字符串池中創建1個。
2,垃圾收集器將取出重復項,並且在每個for循環之后,沒有一個
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.