关于Java中自增操作的陷阱题目

java 复制代码
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 复制代码
j = j++;

这个语句的执行可以分解为以下步骤:

后缀自增操作:当我们看到 j++,它是一个后缀自增。这意味着首先返回 j 的当前值,然后 j 的值自增。

赋值操作:我们有 j = ...。这是一个赋值操作,将等号右边的值赋给 j。

现在,结合这两个操作,考虑 j 的初始值为 0:

j++ 先返回 0(因为它是后缀自增),然后 j 的值增加到 1。

但是,由于赋值操作,返回的 0 立即被赋予 j,这会撤销前面的自增操作。所以,j 的值又变回 0。

这样的过程在每次循环中都会发生,所以无论循环执行多少次,j 的值都始终保持为 0。

相关推荐
zhangfeng11335 小时前
openclaw skills 小龙虾技能 通讯仿真 matlab skill Simulink Agentic Toolkit,通过kimi找到,mcp通讯
开发语言·matlab·openclaw·通讯仿真
小O的算法实验室5 小时前
2025年IEEE TETCI,异构无人机取送货问题中的转运优化,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
Javatutouhouduan11 小时前
2026Java面试的正确打开方式!
java·高并发·java面试·java面试题·后端开发·java编程·java八股文
chao18984411 小时前
基于 SPEA2 的多目标优化算法 MATLAB 实现
开发语言·算法·matlab
沪漂阿龙11 小时前
AI大模型面试题:支持向量机是什么?间隔最大化、软间隔、核函数、LinearSVC 全面拆解
人工智能·算法·支持向量机
JAVA面经实录91711 小时前
Java初级最终完整版学习路线图
java·spring·eclipse·maven
赏金术士11 小时前
Kotlin 习题集 · 高级篇
android·开发语言·kotlin
little~钰12 小时前
倍增算法和ST表
算法
Cat_Rocky12 小时前
k8s-持久化存储,粗浅学习
java·学习·kubernetes
楼兰公子12 小时前
buildroot 在编译rust时裁剪平台类型数量的方法
开发语言·后端·rust