java中i=i++问题分析

结果还是0 为什么?

程序的执行顺序是这样的:因为++在后面,所以先使用i,“使用”的含义就是i++这个表达式的值是0,但是并没有做赋值操作,它在整个语句的最后才做赋值,也就是说在做了++操作后再赋值的,所以最终结果还是0

让我们看的更清晰点:

这是java里的实现,当然在其他的语言如c或是c++中可能并不是这么处理的,每种语言都有各自的理由去做相应的处理。

这警示我们:不要在单个的表达式中对相同的变量赋值超过一次

让我们从字节码层次看一看,源码如下:

这里,我从第0行开始分析(分析中【】表示栈,栈的底端在左边,顶端在右边):

原文发布于微信公众号 - java一日一条(mjx_java)

原文发表时间:2015-11-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏逸鹏说道

Python3 与 C# 基础语法对比(String专栏)

Python3 与 C# 基础语法对比:https://www.cnblogs.com/dotnetcrazy/p/9102030.html

13720
来自专栏IT派

程序员必知的 Python 陷阱与缺陷列表

我个人对陷阱的定义是这样的:代码看起来可以工作,但不是以你“想当然”的方式。如果一段代码直接出错,抛出了异常,我不认为这是陷阱。比如,Python程序员应该都遇...

12940
来自专栏逸鹏说道

Python3 与 C# 基础语法对比(String专栏)

Python3 与 C# 基础语法对比:https://www.cnblogs.com/dotnetcrazy/p/9102030.html

13930
来自专栏我是业余自学C/C++的

各种编码

26530
来自专栏用户2442861的专栏

字符编码笔记:ASCII,Unicode和UTF-8

今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料。

9510
来自专栏菩提树下的杨过

不伦不类的Action Script 3.0

因工作需要,有可能要接手以前一位Flash程序员同事的代码,今天看了下Action Script 3.0,发现这玩意儿真的有点那个啥... 打开Flash C...

19690
来自专栏阮一峰的网络日志

字符编码笔记:ASCII,Unicode 和 UTF-8

今天中午,我突然想搞清楚 Unicode 和 UTF-8 之间的关系,就开始查资料。 这个问题比我想象的复杂,午饭后一直看到晚上9点,才算初步搞清楚。 下面就是...

26840
来自专栏分布式系统和大数据处理

四种简单的排序算法

我觉得如果想成为一名优秀的开发者,不仅要积极学习时下流行的新技术,比如WCF、Asp.Net MVC、AJAX等,熟练应用一些已经比较成熟的技术,比如Asp.N...

15720
来自专栏前端桃园

ES6之块级作用域

16440
来自专栏java一日一条

java中i=i++问题分析

程序的执行顺序是这样的:因为++在后面,所以先使用i,“使用”的含义就是i++这个表达式的值是0,但是并没有做赋值操作,它在整个语句的最后才做赋值,也就是说在做...

8610

扫码关注云+社区

领取腾讯云代金券