关于Java i++ ++i 的问题

代码如下:

int i = 50;
++i;  // i++
System.out.println("自增后:" + i);


为什么运行 i++ ++i 结果都是51     i++结果不应该是50吗?

你将 ++i 和 i++ 语句单独写出来作为一条独立语句的时候,这两者是没有区别的。
看下面这种情况:

     int i = 50,j;
    j=(i++)*2;   // j=(++i)*2 
    System.out.println(i);
    System.out.println(j);

上面代码中,i++和++i的区别就会体现出来:
j=(i++)*2 时,参与乘2操作的是50,而当j=(i++)*2这条语句执行完之后,才会执行 i++ ,所以对于j=(i++)*2 最后的结果是 j=100 i=51.
j=(++i)*2 时,参与乘2操作的是51,先将 i 自增 1,再参与乘2 运算,所以对于j=(++i)*2 最后的结果是 j=102 i=51.

++i; 这是一条语句。 执行完才会运行下一行。

其实就相当于i=i+1; 单独拿出来确实比较特殊,和赋值的时候有区别。

可以理解为i++是先用后+,++i是先+再用