在Java中重用循环中变量的首选方法

时间:2011-04-18 15:51:15

标签: java idioms

以下是重用section向量的首选方法吗?

Iterator<Vector> outputIter = parsedOutput.iterator();

while(outputIter.hasNext()) {
    Vector section = outputIter.next();
}

Vector section = null;

while(outputIter.hasNext()) {
    section = outputIter.next();
}

4 个答案:

答案 0 :(得分:9)

第二种方式意味着变量section在循环外可见。如果你没有在循环之外使用它,那么就没有必要这样做,所以使用第一个选项。就性能而言,应该没有任何明显的差异。

答案 1 :(得分:8)

我更喜欢第二个版本,因为在循环结束后你的范围内没有未使用的变量。

然而,

怎么样?
for (Vector section: parsedOutput) {
    ...
}

答案 2 :(得分:0)

如果你不在循环之外使用section那么你的第一种风格会更好。

答案 3 :(得分:0)

直观地说,我会选择解决方案的第二个变体。但最后它几乎取决于优化器,它可能会改变你的代码。尝试编译代码,然后查看生成的字节码以查看发生的情况。您可以使用javap查看生成的内容或任何其他可用的反编译器。

最后,即使这样,代码也可能在运行时以其他方式进行优化。