如何通过引用增加整数?

时间:2014-11-04 16:14:20

标签: java reference integer

是否可以通过引用增加integer值?

int counterA = 0;
int counterB = 0;

int counter = (condition) ? counterA : counterB;
//use counter
counter++;

结果:counterA + counterB将保持= 0,而不是递增。

4 个答案:

答案 0 :(得分:4)

int是一种基本类型,因此没有分配引用,只有值。你可以将它包装在一个类中:

public class IntegerHolder {
   private int value;

   public IntegerHolder(int value) {
       this.value = value;
   }

   public void increment() {
       value++;
   }
   ...
}

答案 1 :(得分:4)

作为int holder的替代方法,您还可以使用数组:

int[] counter = new int[1];

counter[0]++;

答案 2 :(得分:1)

简短回答:使用AtomicInteger

AtomicInteger counterA = new AtomicInteger();
AtomicInteger counterA = new AtomicInteger();

AtomicInteger counter = (condition) ? counterA : counterB;
counter.incrementAndGet();

在Java中,所有变量都是按值传递,包括基本类型,如integer(甚至是对象,但这里可能会让人感到困惑,只需检查there)。

您可能想要使用Integer,但包装类是不可变的。相反,您可以使用可变的AtomicInteger

答案 3 :(得分:0)

作为包装器对象的替代方法(您已经由其他用户提供的答案),您可以使用if-else语句并直接递增值:

int counterA = 0;
int counterB = 0; 

if(condition)
{
    counterA++;
}
else
{
    counterB++;
}

如果你有超过2个计数器,这可能会变得太过分了。