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

相关推荐
晓131318 小时前
第二章:Redis常见命令与Java客户端
java·数据库·redis
invicinble18 小时前
对于springboot
java·spring boot·后端
莫问前路漫漫18 小时前
JRE 核心实操指南:安装、配置、调优与问题排查
java·eclipse·tomcat·jre
填满你的记忆18 小时前
【从零开始——Redis 进化日志|Day7】双写一致性难题:数据库与缓存如何不再“打架”?(附 Canal/读写锁实战)
java·数据库·redis·缓存·面试
灵感菇_18 小时前
Android OkHttp框架全解析
android·java·okhttp·网络编程
Coder_Boy_18 小时前
基于SpringAI的在线考试系统-知识点管理模块完整优化方案
java·前端·人工智能·spring boot
莫问前路漫漫18 小时前
Java Runtime Environment(JRE)全解析:Java 程序跨平台运行的核心基石
java·开发语言
进阶小白猿18 小时前
Java技术八股学习Day22
java·开发语言·学习
蒟蒻的贤18 小时前
操作系统复习
java·开发语言·数据库
sanggou18 小时前
Spring Boot 中基于 WebClient 的 SSE 流式接口实战
java·人工智能