有没有办法在Java中预先增加1?

时间:2011-07-23 12:25:26

标签: java

在Java中,你可以用这种方式将整数i的后增量多一个:

j + i += 2

我想用预增量做同样的事情。

例如j + (2 += i) //This will not work

4 个答案:

答案 0 :(得分:3)

只需将增量语句放在括号中。例如,以下内容将输出pre: 2

int i = 0;
System.out.println(
    ((i+=2) == 0)
    ? "post: " + i : "pre: " + i);

然而,编写这样的代码与混淆有关。将语句拆分为多行将显着提高可读性。

答案 1 :(得分:2)

不确定术语是否存在混淆,但+= 一个帖子或预增量运算符! Java遵循后增量/预增量的C / C ++定义,并且它们在标准中被明确定义为一元运算符。 +=二进制运算符的快捷方式。它评估如下:

lvalue1 += 5 ;
// is really (almost)
lvalue1 = lvalue1 + 5;

指令的汇编程序看起来与二进制版本不完全相同,但在使用Java的级别上,您看不到它。

后增量/预增量是一元运算符,其功能如下:

i++ ; // is something like _temp = i; i = i + 1; return temp;
++i;  // is something like i = i + 1; return i;

这只是它如何工作的一个例子,字节代码不会为后增量情况翻译多个语句。

在你的例子中,你可以说发生了后增量,但实际上,它只是一个增量。这就是为什么我相信你已经做出了(不正确的)跳跃,可能有一个相同操作的预增量版本。但是在C,C ++或Java中不存在这样的事情。

答案 2 :(得分:1)

类似的东西:

int increment = 42;
int oldI = i;
i += increment;
result = myMethod(oldI);
// Rest of code follows.

但你为什么要这样做?

答案 3 :(得分:0)

+=是预增量。如果你想要post增量,只需用postInc方法创建包装器即可。如果你真的需要它,那么它将比括号更具可读性。