关于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始终为初始值,在写代码的时候要避免。

相关推荐
sibylyue11 分钟前
SQLite 运行模式
java·jvm·sqlite
专业程序开发源11 分钟前
django便利店外卖后台管理系统19650-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·python·django·课程设计
JAVA面经实录91716 分钟前
Java高级后端 · 架构组件开发 + CodeReview(本岗位差异化核心)
java·架构·代码复审
toooooop818 分钟前
宝塔Python项目管理器:环境变量踩坑记录
java·jvm·python
代码山河21 分钟前
Java语言特点:跨平台、面向对象、安全性详解
java·学习·架构·教程·面向对象·项目
马剑威(威哥爱编程)25 分钟前
【AI全栈后端12-09】Spring Boot 用流式输出做打字机对话:点下去不再干等
java·人工智能·spring boot·后端
步行cgn27 分钟前
Spring 事务传播行为详解
java·数据库·spring
海宇服务28 分钟前
零信任架构实战:基于海宇车辆vin码查车辆信息详版构建自动化汽配云仓参配核验网关
java·人工智能·架构·自动化
wno70430 分钟前
Spring Boot整合Flyway
java·spring boot·后端
vx_Biye_Design35 分钟前
springboot旅游管理系统18006-计算机课程设计、毕业设计
java·spring boot·后端·python·elasticsearch·django·课程设计