/**
* @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. Windows 磁盘分区

    在“我的电脑”右键,点击“管理”,打开计算机管理,然后如图操作

  2. 巨蟒python全栈开发数据库攻略3:行记录的操作&单表查询3

    1.数据行的增删改 2.单表查询 select&where条件 3.group by&having&order by&limit

  3. 会议室预订 - 对td的处理以区分预订者

    w 待处理

  4. 【我的Android进阶之旅】解决MediaPlayer播放音乐的时候报错: Should have subtitle controller already set

    一错误描述 二错误解决 解决方法一 解决方法二 一.错误描述 刚用MediaPlayer播放Music的时候,看到Log打印台总是会打印一条错误日志,MediaPlayer: Should have ...

  5. 【我的Android进阶之旅】解决bug:You need to use a Theme.AppCompat theme (or descendant) with this activity.

    前言 今天用Android Studio 生成Activity的时候,默认继承AppCompatActivity ,而在AndroidManifest.xml我对该Activity设置了一个主题,然后 ...

  6. DRF(5) - 频率组件、url注册器、响应器、分页器

    一.频率组件 1.使用DRF简单频率控制实现对用户进行访问频率控制 1)导入模块,定义频率类并继承SimpleRateThrottle # 导入模块 from rest_framework.throt ...

  7. 自定义ActionBar图标

    <style name="Theme.glTheme" parent="android:Theme.Holo"> <item name=&qu ...

  8. Oracle 11g数据库详解(2)

    FAILED_LOGIN_ATTEMPTS 用于指定连续登陆失败的最大次数 达到最大次数后,用户会被锁定,登陆时提示ORA-28000 UNLIMITED为不限制 精确无误差 是 实时 PASSWOR ...

  9. spawn 和 exec 的区别(转载)

    众所周知,Node.js在child_process模块中提供了spawn和exec这两个方法,用来开启子进程执行指定程序.这两个方法虽然目的一样,但是既然Node.js为我们提供了两个方法,那它们之 ...

  10. 并行求pi (C++实现)

    用OpenMP并行化求pi的代码,这里用的是公式法求pi.具体如下: //公式法 #include<omp.h> #include<stdio.h> #include<s ...