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

相关推荐
BD_Marathon1 分钟前
Spring——AOP工作流程
java·后端·spring
予枫的编程笔记6 分钟前
深度解析Apache RocketMQ:从核心原理到实战应用
java·apache·rocketmq
Miss_Chenzr8 分钟前
Springboot基于批示的督查督办管理系统c6m0d(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
java·数据库·spring boot
报错小能手10 分钟前
线程池学习(四)实现缓存线程池(Cached ThreadPool)
java·学习·缓存
摇滚侠11 分钟前
Activiti 是什么 activiti-app 是什么 activiti-app 账号密码怎么看 Activiti-app 学习资料
java
qualifying11 分钟前
JavaEE——多线程(5)
java·jvm·java-ee
后端小张12 分钟前
【JAVA 进阶】Spring Boot 中 AOP 切面编程全解析:从基础到实战进阶
java·开发语言·人工智能·spring boot·后端·spring·spring cloud
华仔啊13 分钟前
SpringBoot 如何用 @ControllerAdvice 统一处理异常?
java·后端
a程序小傲20 分钟前
国家电网Java面试被问:图数据库的查询优化和索引设计
java·数据库·面试
钱多多_qdd20 分钟前
springboot注解(三)
java·spring boot·后端