黑马程序员技术交流社区

标题: 用i++ 和 ++i 解释下Java中间变量缓存机制 [打印本页]

作者: LoveMyself    时间: 2015-5-19 02:27
标题: 用i++ 和 ++i 解释下Java中间变量缓存机制
本帖最后由 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的题就不会再迷惑了吧
                                                     
作者: guoyangpeng    时间: 2015-5-19 06:49
理解很透彻呀,赞一个!
作者: zzlin    时间: 2015-5-19 07:20
总结的很好,学习了





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