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

相关推荐
桐薇全肯定6 分钟前
MySQL学生成绩管理系统实战操作
java·数据库·sql
Nuanyt29 分钟前
SSM 学习记录 第二部分 Spring整合Mybatis&Junit AOP核心概念 Spring事务管理 SpringMVC 请求与响应 Rest风格
java·spring·junit·mybatis·restful
醉城夜风~38 分钟前
C++模板详解:从基础到高级全面解析
java·开发语言·c++
程序员天天困1 小时前
Arthas Profiler 火焰图实战:CPU 热点在哪一目了然
java·jvm·后端
我命由我123451 小时前
Android 在构建过程中,发现有两个依赖库都包含了相同路径的资源文件
android·java·开发语言·java-ee·kotlin·android-studio·android runtime
用户3126874877201 小时前
@Autowired 注入的是代理对象?Spring AOP 代理选择原理一次讲透
java·spring
@insist1231 小时前
信息系统管理工程师-任务、标准、EDM 过程与关键域
java·大数据·数据库
木子杳衫2 小时前
Java高级进阶 | 单元测试JUnit + 反射机制实战详解
java·junit·单元测试
qq_366086222 小时前
关于接口路径中中文值解码问题
java·开发语言·数据库