关于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。

相关推荐
远翔调光芯片^1382879887220 分钟前
ECP5702能芯科技PD取电芯片在市场上的优势有哪些?
开发语言·人工智能·单片机·嵌入式硬件·智能家居
午彦琳38 分钟前
2026.9.17
数据结构·算法·leetcode
西峰u40 分钟前
Java单例模式|从基础到多线程安全
java·java单例模式
ClinicTech41 分钟前
实验室洗瓶机的清洗系统架构与自动化控制解析
java·python
linmengmeng_13141 小时前
【总结】MyBatis-Plus批量插入与清表的正确姿势
java·spring boot·mysql·mybatis
木井巳1 小时前
【记忆化搜索】不同路径
java·算法·leetcode·深度优先·剪枝·推荐算法
Sam_Deep_Thinking1 小时前
new Thread()之后发生了什么?
java·后端·面试·程序员
泡海椒1 小时前
规则引擎对比:JQuick-Java vs Drools 轻量场景选型对比
java·开发语言
wno7041 小时前
Spring Security短信验证码登录
java·python·spring
泡泡鱼(敲代码中)1 小时前
Python 容器类型学习笔记:列表、元组、字典、集合
开发语言·笔记·python·pycharm