在样式或性能方面,在循环内或外部定义变量是否更好?
例如:
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]; }
>保持变量范围有限.
>变量可以是最终的
>更具可读性(可能)
外
String variable; for(int i = 0; i < array.length; i++) { variable = array[i]; }
>变量可在循环外访问.
每个人
for(final String variable : array) { }
>仅分配一次(需要来源)
>保持变量范围有限.
>看起来很棒.
进行以下测试.运行大约需要30秒.结果表明,在循环内部或外部定义变量之间的性能没有差异.这很可能是由于编译器优化.因人而异.
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);