java - 哪个是最优的?

标签 java performance loops

在循环内声明一个变量是好的还是在 Java 中即时声明是最优的。此外,在循环内声明时是否会涉及任何性能成本?

例如。

选项 1:循环外

List list = new ArrayList();
int value;

//populate list
for(int i = 0 ; i < list.size(); i++) {
  value = list.get(i);
  System.out.println(“value is ”+ value);
}

选项 2:在循环内

List list = new ArrayList();

//populate list
for(int i = 0; i < list.size(); i++) {
  int value = list.get(i);
  System.out.println(“value is ”+ value);
}

最佳答案

Clean Code , Robert C. Martin 建议 Java 编码人员在尽可能靠近使用它们的地方声明变量。变量的范围不应超过必要的范围。在变量的使用位置附近声明变量有助于为读者提供类型和初始化信息。不要太在意性能,因为 JVM 非常擅长优化这些东西。而是关注可读性。

顺便说一句:如果您使用的是 Java 5 或更高版本,则可以使用以下 Java-5 的新功能显着精简您的代码示例:

  • foreach 结构
  • 泛型
  • 自动装箱

我重构了您的示例以使用上述新功能。

List<Integer> list = new ArrayList<Integer>();

// populate list

for (int value : list) {
    System.out.println("value is " + value);
}

关于java - 哪个是最优的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1885912/

相关文章:

java - 为什么是 SomeClass<? super T> 不等同于 Java 泛型类型中的 SomeClass<T>?

python - 这个 cProfile 结果告诉我我需要修复什么?

PHP 循环用行填充 flex-parent

java Processbuilder - 执行不在 OS X 路径中的文件

java - 不必要的 'else' 语句

java - 基于注释参数创建切入点

performance - R和Matlab速度之间的差异

android - Kotlin:如何使用嵌套列表映射列表

java - 有更好的逻辑可用于在 while 循环中检查 null 吗?

r - 有没有办法将更大列表中的数据帧列表汇总在一起?