java – 在循环内部和外部定义变量之间的区别
发布时间:2020-12-15 04:27:16 所属栏目:Java 来源:网络整理
导读:在样式或性能方面,在循环内或外部定义变量是否更好? 例如: int var;for (...) { var = /*something*/; // Code that uses var} 要么 for (...) { int var = /*something*/; // Code that uses var} 如果您对变量声明如何在内部工作有任何见解,以及其中一个
在样式或性能方面,在循环内或外部定义变量是否更好?
例如: 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); 风格偏好的讨论:https://stackoverflow.com/a/8803806/1669208 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |