簡體   English   中英

在for循環內部,將在java中創建多少個對象?

[英]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將跳過語句

  1. 將創建字符串"abc"並將其放入字符串池
  2. String a = new String("abc")將在字符串池中找到"abc"字符串,創建新的對象字符串,並且不將其放入字符串池

總共將創建11個字符串,並且只有一個"abc"將放入字符串池

for (int i= 0;i<10; i++){
  String a = new String("abc"); 
}

  1. 將創建字符串"abc"並將其放入字符串池。
  2. 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM