资讯专栏INFORMATION COLUMN

java i++与++i

quietin / 1088人阅读

摘要:在中和是比较常见自增运算。也是在面试中常考的知识点之一。前缀式是先执行运算在生成值,后缀式是先生成值在执行运算。

在java中i++和++i是比较常见自增运算。也是在面试中常考的知识点之一。但发现很很多人对于这个自增运算理解的不是太深,或者只是单纯的记忆,没有真正的理解,下面我通过下面的例子,来讲讲我对这个自增运算的理解.

++符号在变量前面为称之为前缀式,++符号在变量后面称之为后缀式。前缀式是先执行运算在生成值,后缀式是先生成值在执行运算。在说的直白一点就是把变量比作一个人,把++符号比作吃饭 那么前缀式就是如果要用它那它必须先吃饭才能干活,后缀式就是必须干完活后,在吃饭。

那么按照上面的比喻,我们看一下面的例子:

    int i = 0;
    int a = ++i;
    int b = i++;
    System.out.println(a);
    System.out.println(b);
    System.out.println(i);

下面我们分析一下上面的执行结果:

a = ++i; 看这条语句,按我们之前的比喻i这个人是先吃饭后干活然后向a汇报工作说我干完了开始i没有吃饭i=0然后i先吃饭此时i=1,然后告诉a我干完了,所有a=1

b = i++; 这条语句就是i已经吃饭饭了,所以i=1因为它是先干活后吃饭,所以先向b汇报说我干完了所以此时b=1

接下来我们在看看i的值 因为i在向b汇报工作是先汇报的,还没有吃饭,所以在汇报完第一件事就是先吃饭,所以不管接下来i还有没有新的工作,它第一件事还是先吃饭,i没吃饭时是1,吃完饭后是2,所以此时的i=2。

我们在看一下面的例子:

    int j = 1;
    j = j++ + j++ + j++ + ++j;

按上面分析,我们来看一下,第一个j++ ++在后面所以是先干活,后吃饭所以此时j=1
第二个j++ 因为第一个j还没有吃饭,所以它要先吃饭,所以此时j=2第三个j++ 因为第二个j还没有吃饭,所以它也要先吃饭,所以此时j=3第四个++j 因为第三个j还没有吃饭,所以它也要先吃饭,所以此时j=4,在看一下符号是在前面,它是先吃饭后干活,所以j在吃一次饭,所以此时j=5所以执行的结果是 1 + 2 + 3 + 5 = 11如果把第四个++j改成j++ 那么结果就是 1 + 2 + 3 + 4 = 10

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/65764.html

相关文章

  • Java多线程基础(一)——线程

    摘要:一线程的基本概念单线程简单的说,单线程就是进程中只有一个线程。多线程由一个以上线程组成的程序称为多线程程序。当线程调用完方法进入后会自动释放锁,线程获得锁。 一、线程的基本概念 1.1 单线程 简单的说,单线程就是进程中只有一个线程。单线程在程序执行时,所走的程序路径按照连续顺序排下来,前面的必须处理好,后面的才会执行。 Java示例: public class SingleThrea...

    WelliJhon 评论0 收藏0
  • Java 性能要点:自动装箱/ 拆箱 (Autoboxing / Unboxing)

    摘要:文章主要介绍通过改进就已存在的骨灰级特性大幅度提高应用性能。在继续解释造成差异的细节之前,让我们仔细回味一下中的这两个概念自动装箱与拆箱。 【编者按】本文作者为 Ali Kemal TASCI,最早于2016年4月9日发布于DZONE社区。文章主要介绍通过改进 Java 1.5 就已存在的骨灰级特性大幅度提高应用性能。 本文系 OneAPM 工程师编译呈现,以下为正文。 如果我告诉你:...

    Jackwoo 评论0 收藏0
  • 高薪程序员&面试题精讲系列22之说说JavaIO流,常用哪些IO流?

    摘要:一面试题及剖析今日面试题今天壹哥带各位复习一块可能会令初学者比较头疼的内容,起码当时让我很有些头疼的内容,那就是流。在这里壹哥会从两部分展开介绍流,即与流。除此之外尽量使用字节流。关闭此输入流并释放与流相关联的任何系统资源。 一. 面试题及剖析 1. 今日面试题 今天 壹哥 带各位复习一块可...

    fnngj 评论0 收藏0
  • JVM 的类初始化机制

    摘要:当你在程序中对象时,有没有考虑过是如何把静态的字节码转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇...

    20171112 评论0 收藏0
  • 长文慎入-探索Java并发编程高并发解决方案

    摘要:所有示例代码请见下载于基本概念并发同时拥有两个或者多个线程,如果程序在单核处理器上运行多个线程将交替地换入或者换出内存这些线程是同时存在的,每个线程都处于执行过程中的某个状态,如果运行在多核处理器上此时,程序中的每个线程都 所有示例代码,请见/下载于 https://github.com/Wasabi1234... showImg(https://upload-images.jians...

    SimpleTriangle 评论0 收藏0
  • 《十万字Java入门练习100例》1-10例——纸上得来终觉浅,绝知此事要躬行

    摘要:代码实现在控制台打印总结本篇文章带大家搭好环境,并体验了控制台打印。输出结果总结熟练掌握取余和整除运算,大有作用。终止本次循环,继续执行下一次循环。 ?本文收录...

    keithyau 评论0 收藏0

发表评论

0条评论

quietin

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<