为什么我可以在循环中创建具有相同名称的多个实例?
我不明白为什么会这样,我希望有人可以向我解释。 这是一个例子:
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’处于当前循环迭代的可见范围内,因此对于下一次迭代,可以初始化具有相同名称的新对象(其他范围)。
这是对象问题的范围。 每次迭代都有它的范围,假设它们根本不是同一个对象