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://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。