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

相关推荐
索荣荣1 分钟前
Java Cookie 全面指南:从原理到 Spring Boot 实战
java·开发语言·python
红烧柯基2 分钟前
nohup java -jar运行jar包时设置启动参数
java·开发语言·jar
Warren986 分钟前
一次文件上传异常的踩坑、定位与修复复盘(Spring Boot + 接口测试)
java·开发语言·spring boot·笔记·后端·python·面试
lang201509288 分钟前
一键生成Java Web项目:Tomcat-Maven原型解析
java·前端·tomcat
heartbeat..8 分钟前
JVM 参数配置指南:内存调优、收集器选择与问题排查
java·运维·jvm·性能优化
娇娇乔木8 分钟前
模块九--static/可变参数/递归/冒泡排序/二分查找/对象数组/方法参数/快速生成方法/debug--尚硅谷Javase笔记总结
java·开发语言
indexsunny11 分钟前
互联网大厂Java面试实录:Spring Boot微服务与Kafka消息队列实战解析
java·spring boot·微服务·面试·kafka·电商·技术解析
乂爻yiyao12 分钟前
2.1 JVM对象创建
java
Re.不晚12 分钟前
JAVA进阶之路——网络通信的层级密码:Socket切入,理解TCP与HTTP协议
java·tcp/ip·http
Vivienne_ChenW15 分钟前
Apollo 配置中心核心用法(实战版)
java·开发语言·分布式·阿里云·产品运营