Java 增量和赋值运算符
2022-09-03 00:24:35
我对post ++和pre++运算符感到困惑,例如在下面的代码中
int x = 10;
x = x++;
sysout(x);
将打印 10 ?
它打印10,但我希望它应该打印11
但是当我这样做时
x = ++x; instead of x = x++;
它将像我预期的那样打印十一个,那么为什么x = x ++;不改变 x 的值 ?
我对post ++和pre++运算符感到困惑,例如在下面的代码中
int x = 10;
x = x++;
sysout(x);
将打印 10 ?
它打印10,但我希望它应该打印11
但是当我这样做时
x = ++x; instead of x = x++;
它将像我预期的那样打印十一个,那么为什么x = x ++;不改变 x 的值 ?
否,10 的打印输出是正确的。了解结果背后的原因是增量前和增量后复合分配之间的差异。使用预增量时,表达式的值在执行增量后取出。但是,当您使用后递增时,表达式的值将在递增之前获取,并在递增结果写回变量后存储以供以后使用。++x
x++
以下是导致您所看到的内容的事件序列:
x
已分配10
++
x
10
11
x
10
x
11
Post Increment(n++): 首先执行语句,然后将值增加一。
预增量 (++n): 首先将值增加一,然后执行语句。
例:
class IncrementTest{
public static void main(String[] args){
System.out.println("***Post increment test***");
int n = 10;
System.out.println(n); // output 10
System.out.println(n++); // output 10
System.out.println(n); // output 11
System.out.println("***Pre increment test***");
int m = 10;
System.out.println(m); // output 10
System.out.println(++m); // output 11
System.out.println(m); // output 11
}
}