温馨提示:本文仅适用于有一定Java代码编写基础人士回顾相关知识,讲解并不详述。如您希望通过代码回顾相关知识或了解相关用法,那么本文适用。

自增、自减都分别对应++、--操作,但是它们分别放在变量前和变量后的含义略有不同,实现的操作结果也不一样。比如:a++、++a、a--、--a。

先从代码示例中了解它们之间的区别:

package com.javase.data_option;
/*
    自增、自减操作原理:a++、a--、++a、--a
    1、在单独使用的时候a++与++a、a--与--a运行结果并无差别,都是原来a的基础上+1或者-1得到的结果。
    2、在做操作的时候,int j = a++(a--),首先第一步将a原来的值赋值给j;第二步对a做+1(或者-1)操作,并将值赋值给a。
    3、在做操作的时候,int j = ++a(--a),首先第一步对a做+1(或者-1)操作,并将值赋给a;第二步将新得到的a值赋给j。
 */
public class AutoPlus {
    public static void main(String[] args){
        int a = 10;
//        // 1、a++与++a单独使用 结果一致
//        /*
//        a++; // a = a+1 = 10+1 = 11
//        System.out.println("a++后a的值:"+a); // 结果:11
//        */
//        ++a; // a = a+1 = 10+1 = 11
//        System.out.println("++a后a的值:"+a); // 结果:11

//        // 2、a++与++a用来做操作 结果不一致
//        /*
//        int j = a++; // ①先将a=10赋给j,此时j=10;②再将a进行+1操作,此时a=a+1=10+1=11
//        System.out.println("j=a++时j的值:"+j); // 结果:10
//        System.out.println("a的值为:"+a); // 结果:11
//        */
//        int j = ++a; // ①先将a进行+1操作,此时a=a+1=10+1=11;②将此时的a=11赋值给j,j=11
//        System.out.println("j=++a时j的值:"+j); // 结果:11
//        System.out.println("a的值为:"+a); // 结果:11

//        // 3、做自减操作原理同自增
//        int j = a--; // ①先将a=10赋给j,此时j=10;②再将a进行-1操作,此时a=a-1=10-1=9
//        System.out.println("j=a--时j的值:"+j); // 结果: 10
//        System.out.println("a的值为:"+a); // 结果:9

        // 练习: y的值是多少? 提示:将a++分为上文所述两步拆分可解
        int y = a++ + a++ + a++; // y = 10 + 11 + 12 = 33
        System.out.println(y); // 结果:33
        System.out.println(a); // 结果:13
    }
}

在Java基础阶段,理解a++与++a,可以这样理解:

int j = a++,就是先将a的值赋给j,再做自增运算;

int j = ++a,就是先将a做自增运算,再将自增后的a值赋给j。相信从示例中也能理解一二。

对于a++与++a的理解,的确是难点。不过可以通过示例中的分成两步的方法来理解。

对于Java进阶学习阶段,就可以从JVM底层进行理解了。这里还属于基础阶段,不作高深解释。对++a与a++区别十分好奇的同伴可以去看看我之前的博客。