在java中创建或重用对象引用之间的区别

时间:2014-05-05 14:44:22

标签: java

我很抱歉,但我想不出更好的标题。能帮我理解这两种情况之间的区别吗?

public class Temp {
int value;

public Temp(int i) {
    this.value = i;
}

public void method(Vector<Temp> vec) {
    Temp temp=null;

    // first case, creating new object but reusing the reference
    for (int i = 0; i < 10; i++) {
        temp = new Temp(i);
        vec.add(temp);
    }

    // second case, object and reference are new
    for (int i = 0; i < 10; i++) {
        Temp temp1 = new Temp(i);
        vec.add(temp1);
    }

}
}

哪种实施应该是最佳实践。

2 个答案:

答案 0 :(得分:6)

您应该尝试将变量保持在最窄的范围内。在这种情况下,第二种情况似乎比情况1好。案例1的唯一好处是,如果你真的需要知道哪个是添加到Vector的最后一个元素(在这种情况下似乎真的很奇怪)

答案 1 :(得分:0)

我更喜欢第二个选项,而不是第一个选项确保它在声明时始终初始化

您无法在第一个选项中将temp声明为final

注意:不要将本地变量保持未初始化状态。在第一个选项中应该是Temp temp = null;