就风格或性能而言,在循环内或循环外定义变量哪个更好?
例如:
int var;
for (...) {
var = /*something*/;
// Code that uses var
}
或
for (...) {
int var = /*something*/;
// Code that uses var
}
如果您对变量声明的内部工作方式有任何见解,以及其中一个如何比另一个表现更好(即使只是稍微好一点),请分享。除了表演之外,哪种风格更受欢迎?
最佳答案
里面
for(int i = 0; i < array.length; i++) {
final String variable = array[i];
}
- 限制变量的范围。
- 变量可以是final
- 更具可读性(可能)
外面
String variable;
for(int i = 0; i < array.length; i++) {
variable = array[i];
}
- 变量可在循环外访问。
对于每个
for(final String variable : array) {
}
- 只分配一次(需要来源)
- 限制变量的范围。
- 看起来太棒了。
性能
运行了以下测试。运行大约需要 30 秒。结果表明,在循环内部或外部定义变量在性能上没有差异。这很可能是由于编译器优化。 YMMV.
final double MAX = 1e7;
long start = System.nanoTime();
String var1;
for(double i = 0; i < MAX; i++) {
var1 = UUID.randomUUID().toString();
}
System.out.println((System.nanoTime() - start) / 1e9);
start = System.nanoTime();
for(double i = 0; i < MAX; i++) {
final String var2 = UUID.randomUUID().toString();
}
System.out.println((System.nanoTime() - start) / 1e9);
关于java - 循环内外定义变量的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29989752/