不简单的自增和自减运算符

自增(++)、自减(--)是Java非常重要的运算符是一元算术运算符。

 

运算符 名称 说明 示例
++ 自增 操作数的值+1 a++或++a
 -- 自减 操作数的值-1 a--或--a

 

 

 

 

自增或自减,分为前缀和后缀,运算的顺序不一样。

1.自增

b=a++,表示a引用,再自增,即a先存放到系统操作栈里,然后赋值给b后,a再自增加1

b=++a,表示a先自增,再引用,即a先自增加1后,然后存放到系统操作栈里,赋值给b.

我们看一个示例:

public class Demo07 {
    public static void main(String[] args) {
        int a = 1;
        int b = a++;
        System.out.println(a);
        System.out.println(b);
    }
}

运算结果 :

 

 示例中b=a++,a先引用,放到系统的操作栈中,然后执行a++,a=a+1,所以a=2,那么b=a,b从操作栈中获取a的值为1,所以b为1.

 

我们在看下,b=++a的结果

public class Demo07 {
    public static void main(String[] args) {
        int a = 1;
        int b = ++a;
        System.out.println(a);
        System.out.println(b);
    }
}

运行结果:

 

 b=++a,按照运算规则,先自增,再引用赋值,所有a先自增,a=a+1,所以a=2,然后把a=2的值放到系统的操作栈中,然后执行赋值操作b=a,所以b=2。

 

同样,对于b=a--和b=--a也是如此。

 

我们看一个经典的示例:

public class Demo07 {
    public static void main(String[] args) {
        int a = 1;
        a = a++;
        System.out.println(a);
    }
}

a的结果等于多少呢,有些人可能脱口而出是2,我们看下程序运行结果:

 

 结果为1,而不是2,为什么?

这个涉及到JVM的处理机制,知乎上有一个大神对此阐述得非常详细,可以看下这篇文章:

https://zhuanlan.zhihu.com/p/103446936?utm_source=qq

 

posted @ 2020-10-23 23:14  Danny·茄子  阅读(225)  评论(0)    收藏  举报