【问题标题】:Why can I create multiple instances with the same name in a loop?为什么我可以在一个循环中创建多个具有相同名称的实例?
【发布时间】:2014-12-28 20:14:22
【问题描述】:

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

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);

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

【问题讨论】:

标签: java object for-loop


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 感谢您的回答!但是我将 TestObject 的每个实例都保存在一个全局数组中。它们在数组中是否仍然具有相同的名称?
        • 您实际上并没有存储对象的名称。您正在存储对象的引用。如果您查看数组内部,您会看到一组具有唯一引用的唯一对象。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-21
        • 1970-01-01
        • 1970-01-01
        • 2023-03-25
        • 2020-04-20
        相关资源
        最近更新 更多