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

来源:互联网 发布:linux ftp下载速度慢 编辑:程序博客网 时间:2024/06/05 16:08

----------- 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学习型技术博客、期待与您交流! ------------

 

 

原创粉丝点击