zoukankan      html  css  js  c++  java
  • java中间变量缓存机制

     1     public class Demo {   
     2         public static  void main(String[] args){          
     3             method_1();  
     4             method_2();   
     5         }  
     6           
     7         private static void method_1(){  
     8             int j = 0;  
     9             for(int i=0;i<100;i++){            
    10                 j = j++;                          
    11             }         
    12             System.out.println("method_1---"+j);      
    13         }  
    14           
    15         private static void method_2(){  
    16             int j = 0;  
    17             for(int i=0;i<100;i++){            
    18                 j = ++j;                          
    19             }         
    20             System.out.println("method_2---"+j);      
    21         }  
    22     }

    输出结果是:

        method_1---0  
        method_2---100  

    为什么会是这样呢?

    因为在计算过程中,使用了Java中间变量缓存机制。在java中,执行自增运算时,会为每一个自增操作分配一个临时变量,如果是前缀加(++i),就会“先自加1后赋值(给临时变量)”;如果是后缀加(i++),就会“先赋值(给临时变量)后自加1”。运算最终使用的,并不是变量本身,而是被赋了值的临时变量

     

    即 method_1方法中的

    j = j++;  

    等同于:

        int temp = j;  
        j = j + 1;  
        j = temp;  

    method_2方法中的

    j = ++j;  

    等同于:

            j = j + 1;  
            int temp = j;  
            j = temp; 
  • 相关阅读:
    shell的正则表达式
    shell语法
    shell通配符
    shell小命令
    DNS
    CCNA参考链接
    Network problem solving flow chart
    我是一个路由器
    我是一个网卡
    Chrome
  • 原文地址:https://www.cnblogs.com/the-wang/p/8118889.html
Copyright © 2011-2022 走看看