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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 LoveMyself 于 2015-5-19 02:30 编辑

public class CacheDemo {
        public static void main(String[] args) {
                Test.method();
        }
}
class Test {
        public static void method() {
                int j = 0;
                int num = 0;
                for (int i = 0; i < 100; i++) {
                        j = j++;
                        num =++num;
                }
                System.out.println("j=" + j + "\nnum=" + num);
        }
}
运行结果:j=0 num=100
分析: 在参与运算时,使用了Java变量缓存机制,在参加自增运算时,Java内部会自动为每一次自增分配一      个临时变量;
          下面,为大家详细分析一下自增时的内部运算过程(自增情况同上代码中):
               1、j=j++;==》可以拆分为:int temp = 0; j=j+1; j = temp; 根据分析大家可以发现,这里面     
                   的j=j+1;对结果是完全没有影响的,无论循环多少次,结果始终是j的初值即为0;
               2、num=++num;==》可以拆分为:num = num +1;int temp =num;num = temp;
                   跟据解析,大家可以发现作为中间变量的temp的值在不断变化着,所以num值也随之变化,
                   即为100;
      根据以上分析,可以总结为个字:加号在前,先加后赋值;加号在后,先赋值后加。
                  掌握住这些的话,类似于:(int j =1;)j = j++ + j++ + j++ + ++j; ==>>11和
                                                      j =++j + ++j + ++j + j++;==>>13的题就不会再迷惑了吧
                                                     

2 个回复

倒序浏览
guoyangpeng 来自手机 中级黑马 2015-5-19 06:49:50
沙发
理解很透彻呀,赞一个!
回复 使用道具 举报
总结的很好,学习了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马