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

相关推荐
奥利奥夹心脆芙几秒前
零基础调试 Java 代码:Gemini 报错排查完整实操指南
java
随意起个昵称几秒前
区间dp-基础题目3(永别)
c++·算法
俊俊谢5 分钟前
[python]FastAPI + 自建SSE 踩坑全记录
开发语言·python·fastapi
周末也要写八哥7 分钟前
有向图Hierholzer算法的另一种实现
算法
bIo7lyA8v10 分钟前
算法调优中的性能回归与基准测试分析的技术8
算法·数据挖掘·回归
有点。11 分钟前
C++贪心算法二(练习题)
c++·算法·贪心算法
西安邮电大学15 分钟前
贪心算法详细讲解
java·后端·其他·算法·面试
开源Z16 分钟前
LeetCode 135 · 分发糖果:两次扫描,先左后右取最大
算法·leetcode
qydz1124 分钟前
杰理开发板做TWS耳机类型方案分享(1)
开发语言·pcb工艺·嵌入式开发·杰理科技
慧都小妮子27 分钟前
不想频繁改 PLC?用 DeviceXPlorer Lua 脚本把产线业务逻辑放到 OPC Server 层
java·junit·lua·takebishi·dxpserver·设备数据采集软件·opc server