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

本文解析了Java中后自增运算符的工作原理,并通过具体示例展示了其在表达式中的行为,帮助理解复杂的运算过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值