黑马程序员技术交流社区

标题: 赋值问题。 [打印本页]

作者: 毛豆豆    时间: 2015-8-7 22:36
标题: 赋值问题。
int a = 1;
a = a++;
a = ++a;
    System.out.println(a);
输出a的结果等于?




作者: 要踏实小伙子    时间: 2015-8-7 23:03
结果等于 2

修改代码,你比较容易理解
int a = 1;
int b=0;
int c=0;
b= a++;  /*  此处b=1   a的初始值1赋值给b,a再后子增1就跟b 没关系了,运算完了你加你的,跟b没关系了。
                  这里我只是换了一个变量名来接收数据,跟你的a=a++是一个效果 */
c = ++b;/*  此处b已经的值已经是1了 ,上一句赋给它的,然后因为++放前面,先自增1  所以b=2 然后再赋值                       
              给c, 这里一样 我换了一个变量名来接收数据 ,跟你的a=++a是一个效果   */
System.out.println(a);
System.out.println(b);
System.out.println(c);

你只要记住 a++ 参与运算的话  就是先用它原来的值  然后再加1



作者: 何时指点江山    时间: 2015-8-7 23:25
其实只要理解a++和a++的不同就好算了。这两个在单独存在的时候是一样的,但是加上其他的运算符的时候,a++是表示先做其他的运算然后自增,而++a是先自增再做其他的运算。
作者: bgxpf    时间: 2015-8-7 23:33
很简单的,楼上说的不错                 
作者: 流水王朝    时间: 2015-8-7 23:43
呃,前来观摩
作者: 谭威威威威    时间: 2015-8-8 10:16
应该是2吧
作者: 真实姓名被注册    时间: 2015-8-8 11:36
a=a++;
表达式的值是1,a自增一次,但赋值的时候仍把表达式的值1赋值给a,a仍是1
a=++a;
a自增一次,表达式的值为2,赋值给a,a的值是2
作者: 毛豆豆    时间: 2015-8-8 14:29
谭威威威威 发表于 2015-8-8 10:16
应该是2吧

明白了  抓到一名同学
作者: godboy001    时间: 2015-8-8 15:43
不是很好的理解的吧,学习了
作者: 谭威威威威    时间: 2015-8-8 15:51
毛豆豆 发表于 2015-8-8 14:29
明白了  抓到一名同学






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