博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java中的 i++ 和++i
阅读量:6495 次
发布时间:2019-06-24

本文共 998 字,大约阅读时间需要 3 分钟。

  hot3.png

记得老师说过一句特别深刻的一句话:”++在后是先赋值后加1,++在后是先加1后赋值“,但是遇到了一个下面的代码,我怀疑是不是理解错了:

public class Client{            public static void main(String[] args){                       int count =0;                       for(int i=0 ;i<10 ; i++){                           count=count++;                       }                       System.out.println("count="+count);            } }

这个程序输出的count等于几?是count自加10次吗?答案等于10?可以非常肯定的告诉你,答案错误!运行结果是count等于0.这是为什么呢? count++ 是表达式,是有返回值的,它的返回值是count自加前的值,java对自加是这样处理的:首先把count的值(注意是值,不是引用)拷贝到一个临时变量区,然后对count 变量加1,最后返回临时变量区的值。程序运行的详细步骤: 这里是列表文本

  • 步骤1:JVM 把count 值(其值为0)拷贝到临时变量区。
  • 步骤2:count值加1,这时候count的值是1。
  • 步骤3:返回临时变量区的值,注意这个值是0,没修该过的。
  • 步骤4:返回值赋值给count,此时count值被重置成0.

count =count ++ 可以换成这样的程序理解

public static int mockAdd (int count){           //先保存初始值            int temp=count;                     //做自增操作            count=count+1;          //返回原始值           return temp; }

于是第一次循环后count的值还是0,其他9次循环也是一样,最终你会发现count的值始终没有变化,始终保存着最初的状态!

转载于:https://my.oschina.net/saulc/blog/690120

你可能感兴趣的文章
jQuery中异步操作对象Deferred
查看>>
MVC设计模式
查看>>
在团队项目遇到的问题及解决方法。
查看>>
springcloud demo---config-client
查看>>
Django设置联合唯一约束 -- migrate时报错处理
查看>>
Java LeetCode 1.Two Sum
查看>>
前端面试题:css相关面试题
查看>>
shell命令的高级使用之---选择性copy
查看>>
最长回文子序列-----动态规划
查看>>
Vue国际化实现
查看>>
设计模式:单例模式
查看>>
FLASH位宽为8、16、32时,CPU与外设之间地址线的连接方法
查看>>
双网卡一般情况不能有两个网关 (转)
查看>>
xshell 远程连接Linux
查看>>
Linux计划任务及压缩归档(week2_day1)--技术流ken
查看>>
ccf算法模板
查看>>
微信小程序登录 该死的官方文档TypeError: the JSON object must be str, not 'bytes'
查看>>
VMware 虚拟机克隆 CentOS 6.5 之后,网络配置问题的解决方案
查看>>
Python ( 1 ) ----- 简介
查看>>
[linux基础学习]run level
查看>>