1. /**
  2. * @Title:Test03
  3. * @Description:
  4. * @author Crazy-ZJ
  5. * @data 2017年9月28日上午9:38:00
  6. * @book 疯狂java讲义(第三版):
  7. */
  8. public class Test03 {
  9. public static void main(String[] args){
  10. int i = 0;
  11. i = i++ + ++i;//先执行i++之后i的值为0,再执行++i,i的值为1,再补增i++ 所以结果应为 i = 0 + 2;
  12. int j = 0;
  13. j = ++j + j++ + j++ + j++;//先执行++j之后j的值为1,再执行j++之后j的值仍然为1,再执行j++的值后j的值还是1但要补增之前的j++,
  14. // 此时j的值变为2,再执行j++之后j的值为2,再补增j++此时j的值为3,最终结果为:j=1+1+2+3;
  15. int k = 0;
  16. k = k++ + k++ + k++ + ++k;//先执行k++之后k的值为0,再执行k++,此时要补增之前k++此时k的值为1再执行第三个k++此时补增之前的k++
  17. // 此时k的值为2,再支持++k后k的值为3,之后再补增第三个k++此时k的值为4,所以最终结果是 k = 0+1+2+4
  18. int h = 0;
  19. h = ++h + ++h;
  20. int p1=0,p2=0,q1=0,q2=0;
  21. p1=++q1;
  22. p2=q2++;
  23. System.out.println("i = "+i);
  24. System.out.println("j = "+j);
  25. System.out.println("k = "+k);
  26. System.out.println("h = "+h);
  27. System.out.println("p1 = "+p1);
  28. System.out.println("p2 = "+p2);
  29. System.out.println("q1 = "+q1);
  30. System.out.println("q2 = "+q2);
  31. }
  32. }

最终输出结果为:

  1. i = 2
  2. j = 7
  3. k = 7
  4. h = 3
  5. p1 = 1
  6. p2 = 0
  7. q1 = 1
  8. q2 = 1

总结:

之前在学习i++ 和++i的时候有一个误区---我当时知道i++是在表达式运算完以后自增,++i是在自增以后再参与运算。但是这样是错误的!看上面的例子就知道,

K=k++ + k++ + k++ + ++k;这种情况 在我以前看来结果是1,其实第一个k++参与运算的时候没有自增,但在第二个k++的时候k要补增第一个K++,第三个要补增第二个,第四个要补增第三个。并不是这个表达式运算完成以后K++自增,而是在下一个K++的时候自增!!!

一篇看懂++i i++的更多相关文章

  1. .net core kafka 入门实例 一篇看懂

      kafka 相信都有听说过,不管有没有用过,在江湖上可以说是大名鼎鼎,就像天龙八部里的乔峰.国际惯例,先介绍生平事迹   简介 Kafka 是由 Apache软件基金会 开发的一个开源流处理平台, ...

  2. 一篇看懂Docker

    松勤教育2020.4.20 我要分享     Docker 是什么? Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口.它是目前最流行的 Linux 容器解决方案. Dock ...

  3. vuex介绍--一篇看懂vuejs的状态管理神器

    原文,请点击此链接http://www.ituring.com.cn/article/273487

  4. 一篇看懂Socket开发

    Socket[套接字]是什么,对于这个问题,初次接触的开发人员一般以为他只是一个通讯工具. Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发 T ...

  5. 一篇看懂JVM底层详解,利用class反编译文件了解文件执行流程

    JVM之内存结构详解 JVM内存结构 java虚拟机在执行程序的过程中会将内存划分为不同的区域,具体如图1-1所示. 五个区域 JVM分为五个区域:堆.虚拟机栈.本地方法栈.方法区(元空间).程序计数 ...

  6. 小白学习VUE第一篇文章---如何看懂网上搜索到的VUE代码或文章---使用VUE的三种模式:

    小白学习VUE第一篇文章---如何看懂网上搜索到的VUE代码或文章---使用VUE的三种模式: 直接引用VUE; 将vue.js下载到本地后本目录下使用; 安装Node环境下使用; ant-desig ...

  7. 小白也能看懂的Redis教学基础篇——朋友面试被Skiplist跳跃表拦住了

    各位看官大大们,双节快乐 !!! 这是本系列博客的第二篇,主要讲的是Redis基础数据结构中ZSet(有序集合)底层实现之一的Skiplist跳跃表. 不知道那些是Redis基础数据结构的看官们,可以 ...

  8. 小刻也能看懂的Unraid系统使用手册:基础篇

    小刻也能看懂的Unraid系统使用手册 基础篇 Unraid系统简介 Unraid 的本体其实是 Linux,它主要安装在 NAS 和 All in One 服务器上,经常可以在 Linus 的视频里 ...

  9. 小白也能看懂的Redis教学基础篇——做一个时间窗限流就是这么简单

    不知道ZSet(有序集合)的看官们,可以翻阅我的上一篇文章: 小白也能看懂的REDIS教学基础篇--朋友面试被SKIPLIST跳跃表拦住了 书接上回,话说我朋友小A童鞋,终于面世通过加入了一家公司.这 ...

随机推荐

  1. css3动画效果:2 简易动画

    1. transition动画:鼠标移上去  旋转放大 关键点--  :hover  \ transform: scale(*)  rotate(*deg) cards 2.关键帧动画: 位移动画 t ...

  2. vue学习之旅:入门

    首先利用脚手架vue cli搭建vue环境 引入 vue <script src="https://unpkg.com/vue/dist/vue.js"></sc ...

  3. 解决phantomjs输出中文乱码

    解决phantomjs输出中文乱码,可以在js文件里添加如下语句: phantom.outputEncoding="gb2312"; // 解决输出乱码

  4. pt-online-schema-change 和 oak-online-alter-table功能对比

    今天再查看文档的时候突然看到了oak-online-alter-table执行在线ddl,以前只使用过pt-online-schema.所以这里收集一些资料对比下差异,方便日后自己查阅. 一.oak- ...

  5. ubuntu 使用串口picocom

    连上USB转串口 查看是否识别串口     dmesg | grep ttyUSB0 安装(mint / ubuntu): $ sudo apt-get install picocom 使用: 先赋予 ...

  6. jenkins 升级

    升级Jenkins Jenkins的开发迭代非常快,每周发布一个开发版本,长期支持版每半年更新一次(ps:大版本更新).如此频繁的更新,怎么升级呢? war:下载新版的war文件,替换旧版本war文件 ...

  7. Python__return

    return的注意点: return返回的值, 没有任何类型限制 return是函数结束的标志,函数内可以写多个return,但执行一次,函数就立刻结束,并把return后的值作为本次调用的返回值.

  8. (转)JAVA-反射机制的使用

    Java反射机制的实现原理 反射机制:所谓的反射机制就是java语言在运行时拥有一项自观的能力.通过这种能力可以彻底的了解自身的情况为下一步的动作做准备.下面具体介绍一下java的反射机制.这里你将颠 ...

  9. Erlang正则解析操作文件

    -module(tool). %% ==================================================================== %% API functi ...

  10. Thymeleaf添加页面模板

    在页面编辑中,有一些公共的页面部分(比如header,footer等)可以抽取出来放到模板中,其他页面使用的时候可以调取该模板,这样的好处是如果修改这些公共部分,只修改模板中的代码即可. 为了做到这一 ...