java中的i++与++i

还记得在学语言的时候对于i++和++i实在是弄不清楚,今天就好好分析一下java中i++和++i的区别,C/C++里的i++和++i似乎和java不太一样,日后再分析。

首先对此记住一条:i++是先使用i的值然后再进行进行+1,而++i是先对i进行+1再使用i的值。以下对几种比较容易产生疑惑的情况进行下解析。

1.第一种情况

		int i = 0;
		System.out.println(i++); //先使用i的值0,再对i进行加1操作 i=1,i++=0
		System.out.println(i); 
		i=0;
		System.out.println(i);
		System.out.println(++i); //先对i进行加1操作 再使用i的值即 i=1,++i=1

2.第二种情况

		int h = 0;
		h = h++ + ++h + ++h + ++h;
		System.out.println(h);
上面代码中 刚开始h为0,h++先对h的值进行引用,此时(h++)=0,而h的值已自加为1;之后进行++h运算,先对h进行自加1,再引用h的值,之前h值为1,自加1,h此时为2,同理,后面两个++h分别为3,4.。所以最后h=0+2+3+4=9

		int m = 0;
		m = m++ + m++ + m++ + m++;
		System.out.println(m);

跟上面的情况一样,m++先引用m值再自加,m=1,m++=0。最后m=0+1+2+3=6

3.第三种情况

		int n = 0;
		n = n++;
		/**
		 * n=n++由于++的优先级比=的优先级高,所以先进行n++,此时n为1,而(n++)仍为0,进行赋值n为0
		 */
		System.out.println(n);

n=n++,此处的往往会出现疑问,网上的解释是,n=n++是先赋值再对n值进行自加,那么最后打印n值得到的应该是1,但是在java中发现最后n值仍为0,我的想法是:n=n++中++优先级比=的优先级高,先进行++运算,此时n值为1,而(n++)的值为0所以赋值给n,n再次变为0,所以最后打印n值为0.



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值