将在以下代码中创建多少个对象:
for (int i= 0;i<10; i++){
String a = new String("abc");
}
for (int i= 0;i<10; i++){
String a = "abc";
}
答案 0 :(得分:1)
第一个循环将创建10个不同的对象,第二个循环将仅具有一个对象,因为文字对象字符串在编译时仅创建一次,并且每次请求编译器都将返回相同的引用。
答案 1 :(得分:1)
在Difference between string object and string literal中回答
在第一个for循环中(因为使用了新的String),将创建10个对象并 在第二个for循环中,将仅创建一个对象并将其重用(因为它将存储在字符串池中)。
答案 2 :(得分:0)
0,因为未使用字符串a,因此jvm将跳过语句
答案 3 :(得分:0)
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)
并将其放入字符串池"abc"
将在字符串池中找到String a = new String("abc")
字符串,创建新的对象字符串,并不要将放入字符串池将创建总共11个字符串,并且仅将一个"abc"
放入字符串池
"abc"
for (int i= 0;i<10; i++){
String a = new String("abc");
}
并将其放入字符串池。"abc"
将在字符串池中找到存在的字符串String a = "abc"
,而引用"abc"
则指向相同的字符串对象a
。将创建总共1个字符串并放入字符串池
"abc"
答案 4 :(得分:0)
将在堆中创建10个对象,在字符串池中创建1个对象。
答案 5 :(得分:-1)
2,垃圾收集器将取出重复项,并且在每个for循环之后,没有人