是否可以通過引用增加integer
值?如何通過引用增加整數?
int counterA = 0;
int counterB = 0;
int counter = (condition) ? counterA : counterB;
//use counter
counter++;
結果:counterA + counterB將保持爲0,而是遞增。
是否可以通過引用增加integer
值?如何通過引用增加整數?
int counterA = 0;
int counterB = 0;
int counter = (condition) ? counterA : counterB;
//use counter
counter++;
結果:counterA + counterB將保持爲0,而是遞增。
int
是一個原始類型,所以沒有引用被賦值,只有值。您可以在類包裝它:
public class IntegerHolder {
private int value;
public IntegerHolder(int value) {
this.value = value;
}
public void increment() {
value++;
}
...
}
好的,我接受這是一個有效的答案,但可能會直接使用AtomicInteger。 – membersound 2014-11-04 16:20:09
你可以使用Integer類。 – 2014-11-04 16:21:47
@Zéychin不,它是不可改變的。 – assylias 2014-11-04 16:22:02
作爲替代一個int持有人也可以使用數組:
int[] counter = new int[1];
counter[0]++;
+爲簡單起見。 – manouti 2014-11-04 16:26:05
作爲一個包裝對象的替代(你已經得到了答案由其他用戶提供的),你可以只使用一個if-else
語句,並直接增加值:
int counterA = 0;
int counterB = 0;
if(condition)
{
counterA++;
}
else
{
counterB++;
}
,如果你有超過2個計數器,雖然這可以變得過於易於使用的。
簡短的回答:使用AtomicInteger:
AtomicInteger counterA = new AtomicInteger();
AtomicInteger counterA = new AtomicInteger();
AtomicInteger counter = (condition) ? counterA : counterB;
counter.incrementAndGet();
在Java中,所有變量都傳遞的價值,包括原始類型,如integer
(甚至對象,但可以在這裏混淆,只是檢查there)。
您可能會使用Integer
,但包裝類是不可變的。相反,您可以使用可變的AtomicInteger
。
不,請使用持有者對象,例如。 'AtomicInteger'。 – 2014-11-04 16:15:03
這太好了,你介意加入這個答案。可能是我在找什麼。 – membersound 2014-11-04 16:18:29
@membersound沒有必要。一個答案與張貼相同的想法:) – 2014-11-04 16:19:17