黑马程序员技术交流社区

标题: i++和++i问题 [打印本页]

作者: 李泽霖    时间: 2012-2-6 17:21
标题: i++和++i问题
i++与++i有什么区别哪?
作者: 黑马唐浩    时间: 2012-2-6 17:26
++i把i的值加1,再使用i。
而i++是先使用i,使用完了把i值加1.
作者: 唐秀启    时间: 2012-2-6 17:27
int i = 1;
System.println(i++); //输出 i为1
System.println(++i); //输出 i为2
i++是先调用i然后再i再自加
++i是i自加完后再调用i

建议有些问题先搜 如果论坛有的话 直接看就可以了
作者: 张建银    时间: 2012-2-6 17:30
map.put(1,"张三");请问怎么样将1,张三这个键值对往map中加4次,
作者: 任奇    时间: 2012-2-6 17:35
int i = 1;
System.out.println(i++);  //输出结果为:1
int x = 1;
System.out.println(++x);//输出结果为:2
由此可得:i++ 先执行输出 后进行自增。
          ++i 先执行自增 后进行输入。
作者: 魏腾飞    时间: 2012-2-6 17:56
关于这种运算符很神奇,当时学习c语言的时候就比较困惑,后来慢慢搞清楚了。
i++和++i,前者首先对把i的值给其他变量然后i+1后者是直接进行运算然后也+1。
然后i--和--i也是同样的情况。
作者: 马欢    时间: 2012-2-6 18:07
i++和++i乍一看没什么不同,都是i+1.
i++是i运行了其他指令之后i的值加1
++i是i加1后再运行指令
int  i=3;
i++;
System.out.println(i);结果为3
int  i=3;
++i;
System.out.println(i);结果为4


作者: 彭沛东    时间: 2012-2-6 18:28
java中的++ i和 i++ 和c语言中是一样的

首先你要明确以一点是不管是 ++i 还是 i++,最后结果对于i来说都是一样的,他的值都会加1。
eg:i=5;这两个动作完成后i的值都变成6。

其次 对于他赋值给的那个变量就不一样了。
eg:i=5;
    a = ++i,这句执行完后a = 6,当然i=6;
但是
    a = i++,这句执行完后a = 5,i=6;

看了上面的例子应该明白结果了吧。

理解的话对于a = ++i你可以理解先执行+,再赋值。而对于a = i++,是先执行赋值再+。
作者: 黄秋    时间: 2012-2-6 18:34
张建银 发表于 2012-2-6 17:30
map.put(1,"张三");请问怎么样将1,张三这个键值对往map中加4次,

map的键值不允许重复的,怎么可以往map中加4次呢?重复put 会把之前的冲掉, map.put(1,"张三");map.put(2,"张三");--- 这样才可以。
作者: lvwenwen88    时间: 2012-2-8 17:05

++i把i的值加1,再使用i,是先赋值再运算
而i++是先使用i,使用完了把i值加1.,是先运算,再赋值
作者: 张开开    时间: 2012-2-8 23:11
i++是先使用,后自增。而++i是先则增,后使用!比如:int i=0;j=0;j=i++;那么j就是0,如果是j=++i;j就是1
作者: 刘元霄    时间: 2012-2-9 01:22
i++ 是先读i在实行+1操作。
++i是先加1然后再度加过后的结果!
作者: 蒙武辉    时间: 2012-2-9 02:15
i++和++i运算以后的结果都是自增一,但是在赋值方面就有区别了,i++会先赋值后自增一,++i自增一以后才会赋值。
作者: 张青峰    时间: 2012-2-9 09:34
楼上的已经说的很清楚了,我就不在重复了.说下我的经验:
如果怕忘记,楼主可以强制记忆:
"i++"=i   
"++i"=i+1
作者: 紫色梦幻1989    时间: 2012-2-9 23:21
class VarDemo
          {
                   public static void main(String[] args)
                      {      int x=4720;

                             x=x/1000 * 1000;//输出结果为4000,因为想,1000都为int型,x/1000会强制省去小数点后的,转换为int型的4;

                           System.out.println(x);

                         System.out.println(10%3);

                         System.out.println(-1%5);//输出-1;

                         int a=3;b;

                           b=a++;//先赋值后自增;

                          System.out.println(b);

                          System.out.println(a);//输出结果:3  4;

                         System.out.println(a+","+b);//输出结果为:4,3;

                           b=++a;//先增后赋值

                        //字符串数据和任何数据使用+都是相连接,最终都会变成字符串。

                          System.out.println(“ajajajajaj”+“ksskskskks”);//'+'这个加号为连接符;

                         System.out.println(“5+5=”+5+5);//输出结果为5+5=55;

                          System.out.println("ab"+5+5;)//输出结果为ab55;

                         System.out.println("5+5="+(5+5));//输出结果:5+5=10;


作者: 戴振良    时间: 2012-2-10 00:11
本帖最后由 戴振良 于 2012-2-10 00:13 编辑

这个问题很简单,只要记住两点:
1、前加加是先自加1再使用
2、后加加是先使用再自加1
后加加,如:x=1,y=(x++)+5; //因为这里是后 ++,所以是先使用x的值1和5相加后x才开始自加1。而且不管是否有括号( ),都是先使用后自加,所以这里的y=6;  
前加加这里就不解释了,大家都懂的。
       
作者: 袁野    时间: 2012-2-10 15:09
i++ 先运算后自己在+1 ++i 先自己加一 在参与运算
作者: 小白    时间: 2012-2-10 17:34
i++:先运算再加1
++i:先加1在运算
作者: 任增涛    时间: 2012-2-10 18:10
共同点:如果i=1;i++ 和++i 都是对i做了加1的操作。无论你是那种做法,如果最后打印:System.out.println(i);   那么打印结果都是2,因为i加了1。上面好像有同学好像说错了这点。
不同点:i++和++i都是可以给别的变量赋值的。例如inti=1;a=i++和a=++i;a的结果是不一样的。a=i++;a的结果是1,因为i 是先把自己的值赋到了a的身上,然后再执行++的操作。而a=++i;最后的结果是2,因为i是先执行++的操作再把值赋给a的。所以a的值是不一样的!但是i都执行了++的操作,所以i 的值都是一样的。
作者: 衣服    时间: 2012-2-10 18:21
后自增 i++ 先用i 的值参与它所在表达式的运算,然后对i 增1
前自增 ++i 先对i 增1,然后在出现i 的表达式中用 i 的新值进行运算
注意:只有变量或者结果为变量的表达式,才可以出现在赋值运算符的左边,对一个表达式而不是一个可赋值的变量使用自增或自减运算符是错误的,如++(x+1)
作者: 吴超    时间: 2012-2-10 22:22
a++;相当于a=a+1
b=a++;先把a赋给b,再a自加赋给a
b=++a;先a自加得出结果赋给a,在把a自加的值赋给b




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