使用此for循环时将创建多少个对象?

时间:2012-01-05 14:49:28

标签: java oop

for(int i = 0; i < 3; i++){

Object obj = new Object();

}

是创建3个对象还是只有一个对象重新实例化3次? 引擎盖下会发生什么?

5 个答案:

答案 0 :(得分:7)

将创建三个对象,因为new Object()将被调用三次。

没有像“重新实例化”的对象这样的概念。

现在可以使用相同的堆栈空间来存储从构造函数返回的引用,因此您可以认为在某些方面只有一个变量 1 ,在循环的每次迭代中重新初始化...但是变量和对象是非常不同的,并且在你的脑海中将这两个概念分开是很重要的。


1 在其他方面确实有三个单独的变量,所以请不要太过分。

答案 1 :(得分:1)

您无法“重新”实例化对象。每次调用new关键字时,都会创建一个新对象,因此将创建3个。

答案 2 :(得分:1)

无论何时使用“new”关键字,您都会获得一个新的Object。由于引用位于本地范围内,因此该对象将在循环条件之后超出范围并成为垃圾回收的候选对象。

答案 3 :(得分:0)

您正在堆内存上创建三个不同的对象,但在循环之后,您只能访问您创建的最后一个对象。

编辑:对于“你可以”我的意思是通过指针你只能访问最后一个对象。

答案 4 :(得分:0)

每当使用单词new时,就会创建一个新对象,因此您将创建3个对象。虽然给定了声明变量的范围,但是一旦完成循环,就不能使用任何对象。