Java ++ 的疑惑
迷茫
迷茫 2017-04-17 11:16:58
[Java讨论组]

摘自:http://hi.baidu.com/list263/item/649a1686e4f1ebebe596e073

例子1:
int a= 1;
a = a++;
System.out.println(a); // 等于1

例子2:
int a=5;
int m=(a++)+(a++);
System.out.println(a + ", " + m); // 等于7, 11

为什么?

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(1)
伊谢尔伦

要详细解答这个问题,可以看《Java语言规范》或者《深入Java虚拟机》。

我来个简单点儿的吧:

int m=(a++)+(a++);
       |      |
       ①  +  ②
       |      |
       └─────┘
          |
          m

由于括号的存在,在这个表达式中,我们需要计算 m = ① + ② 的值。(这个就不解释了,括号的优先级最高)

  • ① 的值:很简单就是 a++注意 此时 a++ 的值是 5,而 a 的值是 6。(有疑问吗?)

    • ① 的值: 5

    • a++的值:5

    • a 的值: 6

  • ② 的值:在第一布中, 我们求得了 a 的值 6,因此, ② 的值就是 6,注意此时 a 的值,是 7。(有疑问吗?)

    • ② 的值: 6

    • a++的值:6

    • a 的值: 7

  • 最后 m 的值,也就是 ① + ② 的值,5+6 = 11

    • m 的值: 11

    • a 的值: 7

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号