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

相关推荐
Chloeis Syntax几秒前
MySQL初阶学习日记(5)--- 联合查询
java·笔记·学习·mysql
ArabySide1 分钟前
【Spring Boot】用Spring AOP优雅实现横切逻辑复用
java·spring boot·后端
snow123f2 分钟前
Lambda 表达式怎么用
java·开发语言·线程
梓䈑3 分钟前
【C++】C++11(右值引用和移动语义、可变参数模板 和 包装器)
java·开发语言·c++
深海蓝山4 分钟前
WebSocket(java版)服务示例
java·websocket·网络协议
Howe~zZ4 分钟前
mybatis 报错解决方案ORA-01795: maximum number of expressions in a list is 1000
java·服务器·前端
LiamTuc6 分钟前
Java 抽象类详解
java·开发语言
南山乐只8 分钟前
Spring Boot 2.x => 3.x 升级指南
java·spring boot·后端
任子菲阳10 分钟前
学Java第五十五天——多线程&JUC
java·开发语言
yaoxin52112311 分钟前
265. Java 集合 - LinkedList vs ArrayList 插入性能实战对比分析
java·开发语言