/**
* @Title:Test03
* @Description:
* @author Crazy-ZJ
* @data 2017年9月28日上午9:38:00
* @book 疯狂java讲义(第三版):
*/
public class Test03 {
public static void main(String[] args){
int i = 0;
i = i++ + ++i;//先执行i++之后i的值为0,再执行++i,i的值为1,再补增i++ 所以结果应为 i = 0 + 2;
int j = 0;
j = ++j + j++ + j++ + j++;//先执行++j之后j的值为1,再执行j++之后j的值仍然为1,再执行j++的值后j的值还是1但要补增之前的j++,
// 此时j的值变为2,再执行j++之后j的值为2,再补增j++此时j的值为3,最终结果为:j=1+1+2+3;
int k = 0;
k = k++ + k++ + k++ + ++k;//先执行k++之后k的值为0,再执行k++,此时要补增之前k++此时k的值为1再执行第三个k++此时补增之前的k++
// 此时k的值为2,再支持++k后k的值为3,之后再补增第三个k++此时k的值为4,所以最终结果是 k = 0+1+2+4
int h = 0;
h = ++h + ++h;
int p1=0,p2=0,q1=0,q2=0;
p1=++q1;
p2=q2++;
System.out.println("i = "+i);
System.out.println("j = "+j);
System.out.println("k = "+k);
System.out.println("h = "+h);
System.out.println("p1 = "+p1);
System.out.println("p2 = "+p2);
System.out.println("q1 = "+q1);
System.out.println("q2 = "+q2);
}
}

最终输出结果为:

i = 2
j = 7
k = 7
h = 3
p1 = 1
p2 = 0
q1 = 1
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. c# vue 跨域get post cookie等问题

    背景介绍: 开发微信公共号时前后端分离,后台用C#开发,前端使用vue框架,数据采用axios传输 具体问题: 1:前后端分离造成的跨域访问问题 2:跨域后cookie传输和设置问题 解决方案: 1: ...

  2. 【BZOJ2124】等差子序列 树状数组维护hash值

    [BZOJ2124]等差子序列 Description 给一个1到N的排列{Ai},询问是否存在1<=p1<p2<p3<p4<p5<…<pLen<=N ...

  3. 【BZOJ4660】Crazy Rabbit 结论+DP

    [BZOJ4660]Crazy Rabbit Description 兔子们决定在自己的城堡里安排一些士兵进行防守.给出 n 个点的坐标,和城堡里一个圆心在原点的圆形的障碍,兔子们希望从中选出 k 个 ...

  4. angualar入门学习-- 作用域$scope

    作用域$scope: 是ng执行环境,视图与controller之间的胶水,双向绑定的基础 $scope提供里$watch方法,监听数据模型变化 $scope提供里$apply方法,将数据模型变化更新 ...

  5. 小团队交流为什么 :wq! :wq 二者结果一致?

    w 答案: :q 执行失败--->提示-已经修改,但是尚未保存,+!强制不保存退出 :w 保存

  6. windows7下搭建django开发环境

    Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC)风格的 Web 应用程序框架. 使用 Django,我们在几分钟之内就可以创建高品质.易维护.数据库驱动的应用程序. ...

  7. git "Could not read from remote repository.Please make&n

    git "Could not read from remote repository.Please make sure you have the correct access rights. ...

  8. 我的Android进阶之旅------>Android采用AES+RSA的加密机制对http请求进行加密

    前言 未加密的抓包截图 加密之后的抓包截图 基本需求及概念 AES算法 AES基本原理及算法流程 AES算法流程 RSA算法 RSA算法基本原理及流程 RSA算法实现流程 AES与RSA相结合数据加密 ...

  9. EJB远程客户端和本地客户端

    在客户端中使用企业bean 企业bean的客户端通过依赖注入或JNDI查询的方式获得对企业bean实例的引用. 依赖注入是获得对企业bean实例的引用的最简便的方法. (紧耦合的bean之间相互依赖, ...

  10. Ngfor遍历map的方法

    Ngfor可以遍历list和数组,但如果想遍历map,可以使用下面的方式 在TypeScript文件中: let list = Object.keys(MyObject); 在html文件中: *ng ...