关于x=x++注意事项

一、问题提出。

输出0123456789

输出12345678910

输出0123456789

输出全部为0

二、解释。

x对应一个变量表的槽位,初始值为0,x++对应两条字节码指令iload_x(将x槽位对应的值加载到操作数栈),iinc x1(对x所在的槽位的值进行加一),此时操作数栈的值为0。

自增过后槽位中的x变为了1,但是后面的赋值操作是将操作数栈中的0赋值给本地变量中的x,所以x的值仍然为0。所以循环多次之后,x依然是0。

而vs输出12345678910则是编译器的问题,没必要在意。

三、总结。

在java中,x=x++会导致x始终为初始值,在写代码的时候要避免。

相关推荐
Freak嵌入式14 分钟前
RP2040 PIO 编程模型与状态机原理:从硬件架构到工作逻辑全解析
java·大数据·开发语言·单片机·嵌入式硬件·硬件架构
kakawzw20 分钟前
Netty源码笔记
java·服务器·后端
zhuodedao24 分钟前
Spring AI + MCP 文件工具未调用问题复盘:为什么初始化成功却没有写入文件?
java·debug·agent·springai·mcp
Java小白笔记35 分钟前
Java中大数据实时归集与指标汇总方案
java·大数据·开发语言
随遇而安zx37 分钟前
【地基篇】---Java 8 JVM 知识大纲
java·开发语言·jvm
雾隐隐o38 分钟前
Docker 镜像归档与容器管理
java·docker·eureka
Meta3943 分钟前
Java八股文之Spring Boot 中解决 MySQL 和 Elasticsearch (ES) 的数据一致性问题
java·spring boot·mysql
SimonKing1 小时前
GenOffice上手指南:免费替代Word+PPT+Excel的AI办公神器
java·后端·程序员
liangbo71 小时前
01-JVM 内存模型全景
java·jvm
十年Java程序媛1 小时前
@Async 深度避坑:事务丢失、MDC 上下文丢失、异常静默吞掉完整修复
java·spring boot