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

来源:互联网 发布:mac迅雷提示信任 编辑:程序博客网 时间:2024/06/05 08:13

在面试书上看到一个非常变态的面试题,考的是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.

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

我想说,这样的题真的没有什么实际意义。

0 0
原创粉丝点击