为什么我可以在循环中创建具有相同名称的多个实例?

我不明白为什么会这样,我希望有人可以向我解释。 这是一个例子:

TestObject array[] = new TestObject[10]; for(int i= 0; i <= 10; i++){ TestObject object = new TestObject(); object.setValue(i); array[i] = object; System.out.println(array[i].getObject()); } 

为什么我可以在循环中创建具有相同名称的多个“TestObject”实例? 通常,您无法创建具有相同名称的实例:

 TestObject o = new TestObject(1); TestObject o = new TestObject(2); 

好吧,这显然会引发错误……

for循环的范围仅限于迭代。 因此,在每次迭代中都会创建和销毁TestObject object

循环的每次迭代都是一个块,并且作为一个块,它有自己的范围。 这样做可以达到相同的效果:

 { int i = 0; } { int i = 1; } // etc 

这是因为’object’处于当前循环迭代的可见范围内,因此对于下一次迭代,可以初始化具有相同名称的新对象(其他范围)。

这是对象问题的范围。 每次迭代都有它的范围,假设它们根本不是同一个对象