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

在Java中,您可以通过以下方式将整数i的后递增更多一个:

j + i += 2

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

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

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

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

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

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

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

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

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

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

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

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

就像是:

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

但是你为什么要这样做呢?

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