使用临时变量来操作数组

时间:2016-10-21 15:56:12

标签: java variables garbage-collection heap temporary

所以说我有一个列{item,quantity}的数组。我从sql表中获取这些值,然后按项排序。我正在使用临时变量"数量"操纵双重值:

while(rs.next()){
   item = rs.getString(1);
   for(int i = 0 ; i < array.size ; i++){
     if(item.equals(array[i][0]){
       double quantity = rs.getDouble(2);
       quantity = quantity + Double.parseDouble(array[i][1]);
       array[i][1] = quantity;
     }
   }
 //add code for adding items if not found in array
}

我的问题是,在迭代数组时,使用这个临时变量会更慢/创建垃圾吗? Java是否在if语句的末尾正确处理了这个变量?我问,因为我遇到堆空间问题,我不想重写所有内容来容纳这个。

我的另一个选择是:

if(item.equals(array[i][0]){
   array[i][1] = String.valueOf(Double.parseDouble(array[i][1]) + rs.getDouble(2));
}

感谢您阅读

1 个答案:

答案 0 :(得分:0)

当旧值保持在数组中时,它将始终使用新值覆盖数量。数量不会对你的记忆产生影响,特别是这是原始的。

如果您将处理复杂类型并且您将执行类似的操作,您将覆盖每个循环对对象的引用,因此在数组中您将始终具有对同一对象的引用。