我很抱歉,但我想不出更好的标题。能帮我理解这两种情况之间的区别吗?
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);
}
}
}
哪种实施应该是最佳实践。
答案 0 :(得分:6)
您应该尝试将变量保持在最窄的范围内。在这种情况下,第二种情况似乎比情况1好。案例1的唯一好处是,如果你真的需要知道哪个是添加到Vector
的最后一个元素(在这种情况下似乎真的很奇怪)
答案 1 :(得分:0)
我更喜欢第二个选项,而不是第一个选项确保它在声明时始终初始化。
您无法在第一个选项中将temp
声明为final
。
注意:不要将本地变量保持未初始化状态。在第一个选项中应该是Temp temp = null;
。