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

    废话不说,直接看例子

    1 public class Test3 {
    2     public static void main(String[] args) {
    3         int j =0 ;
    4         for(int i =0 ;i<100;i++){
    5             j=++j;
    6         }
    7         System.out.println(j);
    8     }
    9 }
    输出结果是 100

    j = ++j;
    即为:
      j = j + 1;
      temp = j;
      j = temp
    public class Test3 {
        public static void main(String[] args) {
            int j =0 ;
            for(int i =0 ;i<100;i++){
                j=j++;
            }
            System.out.println(j);
        }
    }

    //输出结果为0

    过程为:
      temp = j;
      j= j+1;
      j= temp;

    为什么会出现这两种不同的情况呢?

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

      (2)j=j++可以分解为赋值和自增两个操作:读出一个值到缓存,将值赋给变量,所以我们要完成三次操作:

      temp = j;(读取变量j到缓存)

      j = j + 1;(改变变量j的值为缓存值,改变变量j的值为1)

      j = temp;(直接读取的值为缓存之0),所以本题读取的值最终是0.

      

  • 相关阅读:
    与eolinker api集成
    为什么要用eolinker帮助API开发
    什么是Eolinekr
    使用Eolinker加快您的API开发
    java反射
    mybatis-查询过程
    mybatis初始化过程
    mybatis的插件分析
    web.xml中的ContextLoaderListener和DispatcherServlet区别
    css+js杂记
  • 原文地址:https://www.cnblogs.com/bigdata-stone/p/10487753.html
Copyright © 2011-2022 走看看