A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© li617111077 中级黑马   /  2013-12-27 16:48  /  1138 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int a = 30;
a = 10+a++;
int b = 10+ a++;
System.out.println("b="+b);
输出结果为什么是40呢

评分

参与人数 1黑马币 +3 收起 理由
乔兵 + 3

查看全部评分

6 个回复

倒序浏览
楼主你好 我测试了一下你的程序 运行的结果 是50  代码已给出

  1. package com.mth.test;

  2. public class Test {

  3.         public static void main(String[] args) {
  4.                 int a = 30; // a的值是30
  5.                 a = 10 + a++;// a的值是40 先使用a的值 但是结果赋值给a 所以a还是40不是41
  6.                 int b = 10 + a++;// b的值是 50 此时a的值是41
  7.                 System.out.println("b=" + b); // 结果是50
  8.         }
  9. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
int a = 30;
a = 10+a++;
int b = 10+ a++;
System.out.println("b="+b);
        //后++,变量本身先+1,表达式的值为加1前计算的值
记住结论就可以了....
反正我是这样理解的.10+a的值先赋给了b..然后a再自增....
实在不明白就多看两遍毕老师的视频吧..

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
首先呢你定义了int a=30,然后a = 10+a++;(开始a的值是30,a=10+a(a=30)++=40运算后会被重新赋值a=40,而a++是先运算在自增)
            int b = 10+ a++;(这里呢,b的值是50,因为a在上面已经重新被赋予值为40,所以b = 10+ a(a=40)++=50,同样的a++这里也是先运算在自增)
System.out.println("b="+b);的结果是50,而不是40.

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
青菜白汤 发表于 2013-12-27 17:15
首先呢你定义了int a=30,然后a = 10+a++;(开始a的值是30,a=10+a(a=30)++=40运算后会被重新赋值a=40,而a ...

谢谢了,已经弄明白了
回复 使用道具 举报
伍艳雄 发表于 2013-12-27 17:09
int a = 30;
a = 10+a++;
int b = 10+ a++;

谢谢了,已经弄明白了
回复 使用道具 举报
75100313 发表于 2013-12-27 17:04
楼主你好 我测试了一下你的程序 运行的结果 是50  代码已给出

谢谢啊,我明白了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马