• Java基础知识强化10:Java中的中间缓存变量机制


    1.对于自增运算++j与j++,由于加一的执行顺序不同,所以Java中有中间缓存变量来储存其单个表达式的值,而j的自增自减的结果依然保留在原来的变量储存区。
    因为本体是j的值,而单个表达式的值是中间产生的一个临时变量值,是在整条计算表达式结束后就可以抛弃的值,所以用个临时中间缓存变量在放就可以了。这就可以实现自增自减运算在计算时值的加减1顺序差异产生的表达式与本体值差异的两个变量储存。

    2.

     1 因为在计算过程中,使用了Java中间变量缓存机制。在java中,执行自增运算时,会为每一个自增操作分配一个临时变量,如果是前缀加(++i),就会“先自加1后赋值(给临时变量)”;如果是后缀加(i++),就会“先赋值(给临时变量)后自加1”。运算最终使用的,并不是变量本身,而是被赋了值的临时变量。
     2  
     3 即 method_1方法中的
     4 [java] view plaincopyprint?
     5 j = j++;  
     6  
     7 等同于:
     8 [java] view plaincopyprint?
     9 int temp = j;  
    10 j = j + 1;  
    11 j = temp;  
    12  
    13 method_2方法中的
    14  
    15 [java] view plaincopyprint?
    16 j = ++j;  
    17 等同于:
    18  
    19 [java] view plaincopyprint?
    20 j = j + 1;  
    21 int temp = j;  
    22 j = temp;

    案例:

     1 public static void main(String[] args) {
     2     int j = 0;
     3     for(int i = 0; i < 100; i++) {
     4         j = j++;
     5     }
     6     System.out.println(j);
     7 }
     8 大概可以理解为:
     9 public static void main(String[] args) {
    10     int j = 0;
    11     for(int i = 0; i < 100; i++) {
    12         int temp = j;    //temp存放的是与j相关计算的结果
    13         j++;
    14         j = temp;
    15     }
    16     System.out.println(j);
    17 }

    这里是输出结果:

    0

  • 相关阅读:
    platform cannot apply stanford theme
    汉化、用户创建
    修改字段
    语言包格式错误引起组件崩溃
    配置LMS/Studio SMTP
    Javascript如何实现AOP
    【转】组件化的Web王国
    【转】前端组件化框架之路
    【转】ES6 手册
    【转】超实用的JavaScript技巧及最佳实践
  • 原文地址:https://www.cnblogs.com/hebao0514/p/4771621.html
Copyright © 2020-2023  润新知