黑马程序员--算术运算符

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------

算 术 运 算 符

1.(1)算术运算符++的原理分析:

              int a=3;//定义一个整型变量a并初始化值为3

           a++;//这个相当于a=a+1;先将a自增1并赋值给a

           System.out.println("a="+a);//输出a

我们可以看出,此时a得到了新的值为4。但是,当我们把a++换成++a的时候,此时又是什么结果呢?

              int a=3;//定义一个整型变量a并初始化值为3

           ++a;//这个相当于a=a+1;先将a自增1并赋值给a

           System.out.println("a="+a);//输出a

此时,我们得到的结果是一样的a=4。那么a++++a的区别又是什么?

2)我们可以看看下面的案例:

           int a=3,b;//定义两个int类型的变量ab,并将a进行初始化值为3

           b=a++;

           System.out.println("a="+a+",b="+b);//a=4,b=3

这时出现的结果是:a=4,b=3;那么,我们是否可以初步理解:b=a++;这条语句的含义是:先将a的初始化值3赋值给b,然后,a进行自增运算并赋值给a

当我们把b=a++;换成b=++a的时候,此时,程序输出的结果会不会发生改变呢?

int a=3,b;//定义两个int类型的变量ab,并将a进行初始化值为3

           b=++a;      

System.out.println("a="+a+",b="+b);//a=4,b=4

我们可以看出此时ab的结果是一样的,那么我们是否可以初步理解:b=++a;这条语句的含义是:a先进行自增运算,然后将运算后的结果赋值给b

根据结果,我们对b=a++;b=++a;这两条语句的初步理解看似是正确的,但是事实上真的是如此吗?

我们先拿b=a++;来分析:

首先我们来看看一下,它的内存图是什么样的?

因为b=a++;时,b要先做一个赋值运算,所以,我们先用1b标识出来,假设b已经先存在了。b=a++;正确的运算原理应该是:先把右边运算完之后,再赋值给左边。也就是说a++要先进行运算,因为a自身的值要参与其他运算,那么这个时候就先用一个临时区域纪录下a的值,我们用2标识。这个时候,a就把自己的值取出来到方法区中进行自增的运算(也就是加1),方法区运算出来的结果再赋值给a。直到这个时候,右边的运算才运算完。这个时候就要把a的值赋值给b,那么它就会把之前存储在临时区域的值3赋值给b,所以,我们才得到最后的结果:a=4,b=3

同理,我们可以推出:b=++a;因为++在前面,所以先进行++运算,即:3+1=4,得到a的值为4,然后,再赋值给b

3)既然,我们已经了解++运算的工作原理,那么我们在来看看下面的情况:

int i=3;

           i=i++;

           System.out.println("i="+i);

这个时候i又是多少呢?

(友情提示:i得到的最终值是临时区域存储的值)

2.(1)算术运算符--的原理分析:

    基本和++致,理解了++很容易理解--,这里就不做具体分析了。

                                  -----------android培训java培训、java学习型技术博客、期待与您交流! ------------

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值