zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    MySQL中的用户与授权
    Vim安装使用和配置
    Mysql中的explain和desc
    array_map、array_walk、array_reduce
    PHP二维数组去重(指定键名)
    git配置ssh秘钥(公钥以及私钥)windows
    在nginx上用FastCGI解析PHP
    关于token登录逻辑分析
    公有云 私有云 混合云 的区别
    使用Docker在服务器上部署Ubuntu,本地传文件到docker
  • 原文地址:https://www.cnblogs.com/hebao0514/p/4771621.html
Copyright © 2011-2022 走看看