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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 沙子 中级黑马   /  2014-12-16 22:23  /  1076 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class Test {
    public static void main(String[] args) {
       
        int i =2;
        i=(i++) +3;
        System.out.println(i);
    }

}

请问I的值为多少?解题过程是什么?

4 个回复

倒序浏览
i 应该等于5
解题过程:i++,是先把i的去取出来放在内存中的某个地方,然后和3相加,接着i++才自增,但是和3相加的数是没有自增的,所以应该是等于5
回复 使用道具 举报
答案是5,看一下优先级
回复 使用道具 举报
i = 5;
解题过程:当++在i的后面时,是将i的自增动作放入内存中,同时将i的值提出来参与运算,因为你的赋值语句正好又是将变化了的i值赋给i,所以在i+2的结果运算出来之后,赋给i,这时i在内存中自增的动作被赋值动作所覆盖了。所以i自增的动作并没有发生。所以i最终的值是5。
回复 使用道具 举报
还是一样的问题,出现好多次了,,,你可以吧b++整体看作有值,就是2,,,而b的值加之后是3
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马