黑马程序员技术交流社区

标题: Java自增++自减——,谁能帮助解答? [打印本页]

作者: 李超_LC    时间: 2016-7-17 16:48
标题: Java自增++自减——,谁能帮助解答?
int i=2;
i=i++;
System.out.println(i);
//++放后面不是先代入运算,再加1吗?为什么i还是等于2?

作者: 武静涛    时间: 2016-7-17 17:26
本帖最后由 武静涛 于 2016-7-17 20:11 编辑

i++:先赋值,再自增。i=i++意思是,先把i的值赋值给左边的 i,然后 i自增。因为 i 自增以前的值为2,所以输出的值为2.
作者: yuxing    时间: 2016-7-17 17:33
因为i被赋值为2之后的自增过程是 将(另一个内存中)局部变量i的自增. 然而主mian中的i会把2赋给那个局部i,结果就是2
作者: anyeyyc    时间: 2016-7-17 18:05
先赋值  再自增
作者: q123123    时间: 2016-7-17 21:53
上边说的对.....
作者: 明天你好hxq    时间: 2016-7-17 22:29
++在右边,先运算后自身加1,所以运算后i为2;++在左边的时候,先加1,再运算。
作者: zhangming    时间: 2016-7-17 23:05
i++ 这个操作:先拿出 i 中的值,在进行自增 1
作者: zhangming    时间: 2016-7-17 23:15
i++ 这个操作:先拿出 i 中的值,在进行自增 1   

个人认为:
1. i进行复制操作之后,自增的操作就根本没有进行,就被输出了,并且程序结束了。
2. 变量 i 只有一个,i++  ===>  i=i+1, 假如我们进行了这个操作,那变量的值肯定会被改变,
只是 什么时候执行 i+1 这个操作,在什么之后执行,我也不是很清楚。
作者: 李健2016    时间: 2016-7-18 21:31
i++单独使用的时候,i++,跟++i都是一样的,因为这句话后面有分号,代表这句已经结束了,即i已经完成自增,后面再用i就是增长过的了
作者: 不作熊孩子    时间: 2016-7-18 21:48
上边说的对

作者: lsp0523    时间: 2016-7-18 22:39
直接i++,不用赋值。
作者: miniccc    时间: 2016-7-18 22:49
上面的解释很清楚了
作者: M_J    时间: 2016-7-19 01:03
就是2呀
作者: HEBEIREN    时间: 2016-7-19 08:39
本帖最后由 HEBEIREN 于 2016-7-19 08:41 编辑

你要理解,自增和自减的这个时间是很短的,i用完之后,立刻就会自增,所有在执行输出语句之前,i的值已经增加了。所以i的值就会变成2,自减也是一样的,变量放到后面也是一样,就是运算的顺序变了而已。

作者: zhangjiesss    时间: 2016-7-19 09:00
不会的话,多看几遍视频
作者: zhengyang    时间: 2016-7-19 09:12
int i = 2;定义了一个变量i,变量是内存中一块存储空间,用来存储常量数据.变量空间可以重复使用
i = i++, 这是一个整体表达式,它的需求是把右边表达式的值赋值给左边, i++是先执行再自增,把i的值(常量2)赋值给i(代表变量i),这是这一行整体表达式最终的结果.是i = 2,2的值赋值给i(整体的结果);整体中有一部分是 i++,i 自增变成存储3;
重点是,部分是整体的一部分,相当于就是变量的存储空间存储3之后又存储2,最终是2(i = 3;然后i = 2,结果是2)
作者: 你的昵称    时间: 2016-7-19 09:33
本帖最后由 你的昵称 于 2016-7-19 10:18 编辑

i=i++ 是先运算后自增!需要改成先自增后运算i=++i
  1. public class Ijiajia {
  2.         public static void main(String[] args) {
  3.                 int i=2;
  4.                <span style="line-height: 30.7999992370605px; background-color: rgb(255, 255, 255);">i=++i </span><span style="line-height: 2.2em;"> ;</span>
复制代码

结果是3.
作者: 不羁的码农    时间: 2016-7-19 09:41
赋值运算优先于++,如果想要等于3需要将++放在前面




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