所以說我有一個數組,列{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));
}
感謝您閱讀
[在循環內部或外部聲明變量]的可能重複(http://stackoverflow.com/questions/8803674/declaring-variables-inside-or-outside-of-a-loop) – acm
A *變量*不會造成垃圾,並且不會變慢。它可能會澄清代碼,特別是在你的情況下,由於該值是未命名的,因此名爲'quantity'的變量更好是這種情況。我的意思是,看看你的第二個例子。對於正在發生的事情,這是非常不明智的。評論可能會有所幫助,但名稱變量也是如此。 --- * FYI:*您的第一個示例缺少'String.valueOf()'調用。 – Andreas
可能更確切的說「一個原始的變量_不會產生垃圾」。作爲對象的變量將在堆上分配內存,並且需要進行垃圾回收。 – mangotang