列{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文の最後にこの変数を適切に処理しますか?私はヒープスペースに問題があるので私は尋ねています、そして、私はこれに対応するためにすべてを書き直す必要はありません。
私の他のオプションがある:古い値が配列で、もちろん維持されるときには常に、新しい値で数量を上書きします
[ループの内部または外部の変数を宣言する]の可能な複製(http://stackoverflow.com/questions/8803674/declaring-variables-inside-or-outside-of-a-loop) – acm
A変数*ゴミを作りませんし、遅くなることはありません。特に、あなたのケースでは、値が明示的に指定されていないことがあるので、 'quantity'という名前の変数が良い場合があります。つまり、あなたの2番目の例を見てください。何が起こっているかについては非常に情報がありません。コメントはそれを助けるかもしれませんが、名前のついた変数もそうです。 --- *参考:*あなたの最初の例は 'String.valueOf()'呼び出しがありません。 – Andreas
「A _variableはプリミティブであり、ガベージを作成しません」と言う方が正確かもしれません。オブジェクトである変数は、ヒープ上に割り当てられたメモリを持ち、ガーベジコレクションされる必要があります。 – mangotang