java i++与++i

465 查看

  • 在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