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

相关推荐
吴声子夜歌4 小时前
Java——开发中通用的方法和准则(一)
java·开发语言
mmsy10244 小时前
缓存知识点总结
java·spring·缓存
运行时异常4 小时前
【WMS 仓储系统集成 AI Agent 实战】第 3 讲:Spring Security 6 + JWT——addFilterBefore 一词之差,全站 401
java·后端
2601_962071574 小时前
如何利用SpringSecurity进行认证与授权
java·服务器·数据库
2601_962069774 小时前
SpringBoot开发——初步了解SpringBoot
java·spring boot·后端
旧梦95274 小时前
Java 单例模式:从基础到实战的完整指南
java·开发语言·单例模式
jay神4 小时前
【计算机毕业设计】基于Spring Boot的宠物领养管理系统
java·spring boot·后端·vue·毕业设计·宠物
cfm_29144 小时前
5种Java并发同步工具全解
java
十五喵源码网4 小时前
基于SpringBoot2+vue2的健身房管理系统
java·毕业设计·springboot·论文笔记
2601_962056604 小时前
可造成敏感信息泄露!Spring Boot之Actuator信息泄露漏洞三种利用方式总结
java·spring boot·后端