我正在阅读官方Java教程,我没有区分postfix和prefix(++ x vs x ++)。有人可以解释一下吗?
答案 0 :(得分:11)
++x
:增加x
; 增量
x++
:增加x
;整个表达式的值是增量
考虑以下两个部分:
int x = 0;
System.out.println(x++); // Prints 0
// x is now 1
int y = 0;
System.out.println(++y); // Prints 1
// y is now 1
我个人试图避免在较大的声明中使用它们作为表达式 - 我更喜欢独立的代码,如下所示:
int x = 0;
System.out.println(x); // Prints 0
x++;
// x is now 1
int y = 0;
y++;
System.out.println(y); // Prints 1
// y is now 1
在这里,我相信每个人都能够计算出x
和y
的印刷内容和最终价值,而不会过多地挠头。
有时候在表达式中提供前/后增量是有用的,但首先考虑可读性。
答案 1 :(得分:5)
++ x递增x然后返回值 x ++返回x的值,然后递增变量
例如:
int x = 0;
int A = ++x; // A = 1
int B = x++; // B = 1
int C = x; // C = 2
答案 2 :(得分:2)
++x
正在递增,x++
正在递增。通过后递增,在评估之后增加值,并且在预先递增之前,在评估之前增加。
答案 3 :(得分:2)
嗯,你得到了足够的答案,我只是为了担心你...后期和预增量运算符都会混淆代码,所以有时最好只使用x + 1然后你和其他人肯定知道那里发生了什么。一些例子:
int x = 5;
x = ++x;
System.out.println( x ); // prints 6
x = x++;
System.out.println( x ); // prints 6!
x = ++x + x++;
System.out.println( x ); // prints 14!
最后两次递增可能是调试问题的根源(在我的生活中几次观察......)。 x = x++
- 在递增之前对其进行评估......所以要小心!
答案 4 :(得分:1)
答案 5 :(得分:1)
基本上,++ x在评估 x之前将x添加到x ,而x ++之后添加1 。如果你把它当作一个论点,这是有道理的。
让我们从x
开始int x = 3;
如果我们使用中缀运算符在x上调用System.out.println:
System.out.println(++x);
x将首先增加到4,println将输出“4”。如果我们这样做,它几乎是一样的:
x+=1;
System.out.println(x);
让我们再想象x等于3。如果我们使用后缀运算符在x上调用System.out.println:
System.out.println(x++);
首先输出x的强当前值,“3”,然后增加x。所以它就像:
System.out.println(x);
x+=1;
希望有所帮助。