黑马程序员技术交流社区

标题: 谁能帮忙做下这道题,谢谢!!! [打印本页]

作者: 小黑与小白    时间: 2015-7-25 22:46
标题: 谁能帮忙做下这道题,谢谢!!!
class Test
{
             public static void main(String[] arges)
             {
                    int a = 10;
                    a=a++
                System.out.println(a);
         }
}


作者: 3174918418    时间: 2015-7-25 22:53
你要要求什麼答案呢?
class Test
{
             public static void main(String[] args)
             {
                    int a = 10;
                    a=a++
                System.out.println(a);
         }
}

PS: a=10
作者: boboyuwu    时间: 2015-7-25 23:09
输出10           吧吧吧吧吧
作者: 小黑与小白    时间: 2015-7-25 23:10
为什么不是11呢???
作者: e咕噜    时间: 2015-7-25 23:11
楼上正解
作者: wayonEmes    时间: 2015-7-25 23:58
因为a++是先进行运算再进行自增操作,而自增后的值并没有赋值给a,所以输出的a仍然是10
作者: a12366456    时间: 2015-7-26 00:08
赋值运算从右到左进行,等号右边a++也是是一个表达式,表达式的值由运算符和变量共同决定,++运算符在变量a右边,该表达式的值为变量a自增前的值即10,然后把10再赋值给a,所以a最后值为10.如果++运算符在变量a左边,该表达式的值为变量a自增后的值即11
作者: softzhang    时间: 2015-7-26 00:48
看下编译结果就知道了。a=a++;. 打印结果为10,先运算后自加 。
作者: hanxiaopi    时间: 2015-7-26 01:00
是的第一位同学很对的
作者: T-l-H、小生    时间: 2015-7-26 01:40
看到这些题目都感觉很有爱的样子·~~~
作者: 一城一世界    时间: 2015-7-26 07:01
小黑与小白 发表于 2015-7-25 22:46
class Test
{
             public static void main(String[] arges)

10吧,因为先赋值后加
作者: decadence90    时间: 2015-7-26 08:22
看int a = 10  ;  a =  a++ ; 这两句代码 , 首先 会 先 在 内 存中有 一个 a = 10   然后 执行 a++ 自增 的过程中  内存中 会自动开辟 出 另一个空间来保存 原始的 a = 10 ,  在执行a = a++这条语句的过程中 a++ 是先运算后自增的,所以a = a++  赋值给a 的就是 原始的 a = 10 ;  以前内存中a++就被覆盖掉了 ,这样说你是否能理解?
作者: 小丑    时间: 2015-7-26 08:47
++a 是先运算在赋值 a++是先赋值后运算 就这样。。
作者: 嗯十一点晚安    时间: 2015-7-26 08:54
建议用eclipse打个断点看一下就明白了,
作者: 帅帅loyal    时间: 2015-7-26 09:13
小黑与小白 发表于 2015-7-25 23:10
为什么不是11呢???

a=a++,你没有弄明白a++的意思,a++意思是 先使用,再加1,所以这里执行顺序应该是先将10传给左边的a,然后右边的a再自增一次,这个时候左边的a的值就是10.打印出来的也是10
作者: 知行合意    时间: 2015-7-26 09:20
关于a++和++a的问题 很好理解,++在前的话就是先++运算再赋值给a,结果就是a = 11,++在后的话就是先赋值给a,a = 10,再++.
作者: syzc321    时间: 2015-7-26 09:31
a=a++可以理解成 a=10,a=a+1,而JAVA底层是从右向左运行,所以加了一,可又把10赋给了a,所以最后输出为10.

作者: 小黑与小白    时间: 2015-7-27 11:18
谢谢各位解答,懂啦!!!
作者: 一城一世界    时间: 2015-7-27 11:31
谁在前就用谁,+在前就用加,变量在前就用变量
作者: rxtm    时间: 2015-7-27 14:33
你一定是个女程序员
作者: 野驴少东    时间: 2015-7-27 15:35
基础班会给你讲的,超哥说++在后,保存a的副本,再自增1
作者: 野驴少东    时间: 2015-7-27 15:36
基础班会给你讲的,超哥说++在后,保存a的副本,再自增1
作者: 陈思伟    时间: 2015-7-27 21:16
好多错误arges改为args  还有a++后面加分号
作者: 曾云鹏    时间: 2015-7-27 21:33
A++先赋值后运算,++a相反
作者: halohoop    时间: 2015-7-28 09:15
看这个帖子。
http://bbs.itheima.com/thread-219245-1-1.html
作者: 122125241    时间: 2015-7-28 09:31
这种题一个反编译,看的清楚  
作者: 郁金香大公爵    时间: 2015-7-28 10:13
妹子的问题,果然太多人来解决啊
作者: maqijian    时间: 2015-7-28 11:24
编译会不通过,会提示你第六行最末尾少了个;
作者: 章浩    时间: 2015-7-28 11:36
这题很可爱的说
作者: 陈思伟    时间: 2015-7-28 20:52
陈思伟 发表于 2015-7-27 21:16
好多错误arges改为args  还有a++后面加分号

今天讲了 关于底层问题。。。
作者: myself123    时间: 2015-7-29 10:36
少个分号把!答案是10,自加是先取值后自加
作者: rose_xiaomei    时间: 2015-7-29 15:10
10 ++a 就是11 头像好喜感,哈哈哈
作者: 陈鹏No1    时间: 2015-7-29 15:19
相当于这样:
  1. class Test
  2. {
  3.              public static void main(String[] arges)
  4.              {
  5.                     int a = 10;
  6.                     //a=a++;
  7.                 System.out.println(a++);
  8.                         }
  9. }
复制代码

作者: 黑进制    时间: 2015-7-29 15:24
我是来看品论的




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