x ++和++ x之间的区别?

时间:2011-01-17 21:09:49

标签: java

  

可能重复:
  Is there a difference between x++ and ++x in java?

我正在阅读官方Java教程,我没有区分postfix和prefix(++ x vs x ++)。有人可以解释一下吗?

6 个答案:

答案 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

在这里,我相信每个人都能够计算出xy的印刷内容和最终价值,而不会过多地挠头。

有时候在表达式中提供前/后增量是有用的,但首先考虑可读性。

答案 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)

好吧,独自站立就是一样。但是,如果涉及其他操作数 - ++ x将推进x然后应用其他操作数,x ++将首先使用x然后推进它。

答案 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;

希望有所帮助。