Java中间缓存变量,在看《Java面试宝典》时,看到面试例题,关于Java缓存变量,一直一脸茫然,查了部分资料,在这里和大家分享一下。

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

输出结果居然是 0

在这里,就涉及到所谓的Java中的中间缓存变量了。在Java中(其他的语言不了解),当进行自增(或自减)运算时,Java会对运算的变量进行临时缓存。
例如:

j = 0;
j = j ++;
就可以分解成:
temp = j = 0; //由于自增在后,所以,先进行临时变量缓存
j = j + 1; // j ++ 运算 ,缓存变量后,进行运算自增
j = temp; // 将缓存变量赋值给 j

可以这么理解,也就是, j = j++运算的时候 ,先进行左边的运算,然后再进行赋值,思路是这样的。
然后,当左边进行了两个运算,第一步是利用中间缓存变量,缓存 j 的初始值,也就是0, 第二部,是给j的变量自增为1, 因为这是两步,右边的自增是在 是后运算,所以当进行给左边赋值的时候,就行使用初始值,也就是临时缓存变量赋值,而自增的结果就会被抛弃。以上是个人总结后认为比较好理解的地方,如有其他意见,还请交流指出,谢谢!

具体参考地址:http://blog.csdn.net/u0112634...


BlackMass
42 声望3 粉丝

为了世界和平