在for循环内部,将在java中创建多少个对象?

时间:2018-09-27 08:36:39

标签: java

将在以下代码中创建多少个对象:

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

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

6 个答案:

答案 0 :(得分:1)

第一个循环将创建10个不同的对象,第二个循环将仅具有一个对象,因为文字对象字符串在编译时仅创建一次,并且每次请求编译器都将返回相同的引用。

答案 1 :(得分:1)

Difference between string object and string literal中回答

在第一个for循环中(因为使用了新的String),将创建10个对象并 在第二个for循环中,将仅创建一个对象并将其重用(因为它将存储在字符串池中)。

答案 2 :(得分:0)

0,因为未使用字符串a,因此jvm将跳过语句

答案 3 :(得分:0)

  1. 将创建字符串def binarysearch(A, v, x, y): found = True while found: if x < y: h = (x+y) //2 if A[h] < v: binarysearch(A, v, h+1, y) else: binarysearch(A, v, x, h) elif A[x] == v: found = False print("Element you are looking for is at index {}".format(x)) else: found = False print("Value is not in array") #Code to test the binarysearch algorithm blist = [] for value in range(0,124): if value % 2 ==0: blist.append(value) print(blist) binarysearch(blist, 68, 0, len(blist)-1) 并将其放入字符串池
  2. "abc"将在字符串池中找到String a = new String("abc")字符串,创建新的对象字符串,并不要将放入字符串池

将创建总共11个字符串,并且仅将一个"abc"放入字符串池

"abc"

  1. 将创建字符串for (int i= 0;i<10; i++){ String a = new String("abc"); } 并将其放入字符串池。
  2. "abc"将在字符串池中找到存在的字符串String a = "abc",而引用"abc"则指向相同的字符串对象a

将创建总共1个字符串并放入字符串池

"abc"

答案 4 :(得分:0)

将在堆中创建10个对象,在字符串池中创建1个对象。

答案 5 :(得分:-1)

2,垃圾收集器将取出重复项,并且在每个for循环之后,没有人