Java

[java]java中间缓存变量机制

2020-03-20  本文已影响0人  小贾同学coding

先来看个题目

控制台输出值为多少
   public static void main(String[] args) {
        int j = 0;
        for(int i =0;i<100;i++){
            j= ++j;
        }
        System.out.println(j);
    }

这题很简单j的值为100
那么下面这个呢

    public static void main(String[] args) {
        int j = 0;
        for(int i =0;i<100;i++){
            j= j++;
        }
        System.out.println(j);
    }

这题的答案是:0
很奇怪是吧,为什么上面的是100,而下面的是0呢?这里就要引出java的中间缓存变量机制。

定义

 java在进行自增运算时会运用中间缓存变量机制,引用一个中间的缓存变量来参与运算。我们都知道i++++i的区别,i++会先进行运算再自增,而++i会先进性自增在进行运算

题目1中,循环的内容为j=++j,实际上在进行运算时,引入了一个中间缓存变量。我们暂时命名为temp
·j=j+1;//先自增
·temp=j;//中间缓存变量赋值为自增后的j
·j=temp;//temp赋值给j
因此题目一种的j是我们所期望的100

 下面我们来看下题目2

题目2中,循环的内容为j=j++,同样的也引入了一个中间缓存变量。我们给它命名为temp
·temp=j//将j赋值给temnp
·j=j+1;//j自增
·j = temp;//将temp值赋值

在这里我们就不难发现,对于j=j++语句j永远是初始值,也就是。

上一篇 下一篇

猜你喜欢

热点阅读