黑马程序员技术交流社区

标题: i++和++i区别到底在哪里呢??? [打印本页]

作者: fenzheng    时间: 2014-4-4 17:10
标题: i++和++i区别到底在哪里呢???
本帖最后由 梦里花-静 于 2014-4-6 16:00 编辑

i++和++i区别到底在哪里呢???
作者: _Water    时间: 2014-4-4 18:20
  1. 1、++i 的用法(以 a=++i ,i=2 为例)

  2.    先将 i 值加 1 (也就是 i=i+1 ),然后赋给变量 a (也就是 a=i ),

  3.    则最终 a 值等于 3 , i 值等于 3 。

  4.    所以 a=++i 相当于 i=i+1 ,a=i

  5. 2、i++ 的用法(以 a=i++ ,i=2 为例)

  6.    先将 i 值赋给变量 a (也就是 a=i ),然后 i 值加 1 (也就是 i=i+1 ),

  7.    则最终 a 值等于 2 ,i 值等于 3 。

  8.    所以 a=i++ 相当于 a=i , i=i+1

  9. 3、++i 与 i++

  10.    a=++i 相当于 i++ , a=i   

  11.    a=i++ 相当于 a=i , i++

  12. 4、++i 与 i++ 单独使用时,相当于 i=i+1

  13.    如果赋给一个新变量,则 ++i 先将 i 值加 1 ,而 i++ 先将 i 赋给新变量。
复制代码

作者: fenzheng    时间: 2014-4-4 19:14
谢谢,还是不太明白,死记硬背先背下来吧
作者: 紫^瞳    时间: 2014-4-4 20:37
如果只是单独一个语句的话,是一样的效果,就是i=i+1。如果一个语句里面有多个运算的话,++i是先自增1后再参与运算; i++是参与运算后再加1
作者: shi0000    时间: 2014-4-4 21:42
给你看两行代码,就很明显了,就是因为我们不经常用。如下:public class laoshihenger {
        public static void main(String[] args) {
                int i=1;
                int b=i++*2;//这里i++是先运算再自加,即b=1*2;运算后i=i+1
                System.out.println(b+" "+i);//这里输出b=2,i=2;
                int c=++i*2;//这里先自加,即先i=i+1=3在运算c=3*2;
                System.out.println(c+" "+i);//输出c=6,i=3;
        }

}


作者: 四川男人    时间: 2014-4-4 22:37
是一个单目运算符。
i++的使用是先赋值,再自加。即先把变量i的值赋给指定变量或作为参数传给方法,然后执行i+=1;
++i的使用是先自加,再赋值。先执行i+=1,再将i的值赋给指定变量或作为参数传给方法;

作者: 曲佳奇    时间: 2014-4-5 20:58
楼上说的都对... 不过我自己理解的话   优先级 ++,--(前缀) 大于 +,-,*,/,= 大于 ++,--(后缀)




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2