黑马程序员技术交流社区

标题: 关于++的问题 [打印本页]

作者: silencea    时间: 2015-9-7 23:33
标题: 关于++的问题
class  Demo{
        public static void main(String[] args) {
                int a = 2;
                int b = 2;
                a = a++;
                b = a++;
               
                System.out.println(a);
                System.out.println(b);
        }
}
请各位大神帮我解答一下,理解不了
作者: zx0210    时间: 2015-9-7 23:40
答案都是2,其实我也不太懂,老师说是先进行a=a+1,然后运行a=1,今天被老师说的云里雾里的!
作者: xiaoxiao147    时间: 2015-9-8 00:15
++在左边表示先+1后赋值,在右边表示先赋值后自增..
作者: 我是三星    时间: 2015-9-8 08:02
a=2
b=3
你可以这样理解,a=a   接下来进行++运算,此时a=3.
类似的b=a 输出运算结果。++在后面,先把值赋给变量,在进行++运算。

作者: wdj    时间: 2015-9-8 10:18
就这个题来说,a 和b都是先把它本身的值赋给左边,然后再自增 1,所以输出结果为2
作者: 迷茫不堪的年纪    时间: 2015-9-8 16:41
自增 的  ++a  a++
这个东西很容易被误认为  a+1。  思维太容易混乱,自己多看几次就明白了
作者: lion_good    时间: 2015-9-8 17:29
a++ 返回+1前的值.然后自己加1
++a 自己+1后返回
作者: sansu    时间: 2015-9-8 18:59
你若去掉b=a++,那么运行结果就是a=2,b=2.你循环语句里的被赋值的a不是你原先定义的a,它只是循环内的局部变量,而你最终输出的sum是你第一次定义的那个全局变量,而不是同名的局部变量。

你若学过C++,你就会学习同名称的全局变量和局部变量的使用方法
作者: xiaozeiyes    时间: 2015-9-8 21:08
a=2;b=2;
++在操作数后边是先参与运算再自增,
a=a++是将a++这个表达式的值赋值给a即a=2;
b=b++同理
作者: a4903913    时间: 2015-9-8 21:37
答案都是2 这是java缓存机制的问题,a=a++;完整的写法是这样的 a = a = a + 1;在运算的时候,会先将 a =a;运算,然后在算 a++ ;
作者: 13706649811    时间: 2015-9-8 22:10
还是2 呗
作者: c4anger    时间: 2015-9-8 23:02
答案是3,2.
作者: 路宪帅    时间: 2015-9-9 10:01
a=3,b=2  
a=a++;是赋值运算 相当于a=a;
b=a++;相当于b=a; a=a+1;




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