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

原文地址:https://www.cnblogs.com/hebao0514/p/4771621.html