您的位置:首页 > 编程语言 > Java开发

Java自加(i++)的所谓缓存变量

2014-03-25 11:50 204 查看
在面试书上看到一个非常变态的面试题,考的是Java的后自加(j++)操作。

public static void main(String[] args){
int j = 0;
for(int i=0; i<100; i++){
j = j++;
}
System.out.println(j);
}
运行结果是0.
首先简化一下问题:

public static void main(String[] args){
int j = 0;
j = j++;
System.out.println(j);
}
运行结果是0.
单独抽出这两句:

int j = 0;
j = j++;


1, int j = 0 开辟一个内存A,赋值为0;

2, 开辟一个内存B,赋值为内存A的值(0);

3, 内存A的值加1;

4, 把内存B的值赋给内存A。

所以,输出结果是0.

再来一个,

int j = 0;
j = j++ + j++ + j++;


1, int j = 0 开辟一个内存A,赋值为0;

2, 开辟一个内存B,赋值为内存A的值(0);

3, 内存A的值加1(1);

4, 开辟一个内存C,赋值为内存A的值(1);

5, 内存A的值加1(2);

6, 开辟一个内存D,赋值为内存A的值(2);

7, 内存A的值加1(3);

8, 将 B+C+D 的值给内存A。

因此,结果为3.

注意,这个只是后加的情况。

我想说,这样的题真的没有什么实际意义。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 面试