Java语言基础(九)

Java语言基础(九)

一.自增运算(++) 自减运算(--)

         i++ 就是将i+1再赋给 i

         i-- 是将i-1再赋给 i

                  

                          

 

                   对变量i,j来说,i++ 或++i 这里没什么区别,都是将i的值加1后,再赋给i

                   ++j 与 j++ 也没什么区别,将j的值加1后,再赋给j

 

 

 

 

 

                   但在这里, i++ 与 ++i 是有区别的

                           

           

                           

                  

                            输出结果为什么是1,考虑一下

 

                           

                            初始的时候 i=1, 那么加1后,i 为什么还是1

 

 

                           

                           

                            首先需要说明的是,i=i++ 包含赋值运算(=) 自增运算(++)

 

                            其中,自增运算(++)的优先级要高于赋值运算(=)

                           

                            下图是从网上找的

 

                                             

                           

                            ++ 的优先级是2,赋值运算应该是14,数值越小,优先级越大

 

                           

                            int i=1;

                            i=i++执行过程

                                     (1).i++的优先级高,执行++,再执行=

                                     (2).i++,先取i的值作为表达式 i++的值,然后将i的值加1,

                                               此时,i++的值是1,而i的值的是2

                                   (3).再将i++的值(1)赋给i,将2给覆盖了,此时i的值是1

                       i 的值的确变了,由1变成了2,但又由2变成了1  所以i的值现在是1

                  

                  

                     对i=++i来说,开发软件他会给出

                                       The assignment to variable i has no effect的提示

                      

          

 

                     提示上说,i=++i,对i没有影响

 

 

 

             我们先分析一下(i=++i)这条语句

                            (1).++的优先级高,执行++,再执行=

                            (2).++i,先将i加1,然后再将 i 的值赋给表达式++i

                                               此时,i的值的是2, 表达式(++i)的值也是2

                            (3).再将++i 的值赋给i

                   i 的值的变化过程,由1变成了2,又由2变成了2

 

                   之所以,出现那句提示,那是因为,在++i执行完后,i的值已经是2,

                   再将++i 的值赋给i ,现在对i的没影响了(都是2),所以才出现那句

 

 

                  上面的可以这样写:

                           

         

 

                  

                  自减运算 (i--)

                            int i=1;

                      i=i--;

                            (1).--的优先级高,执行--,再执行=

                            (2).i--,先取i的值,然后赋给表达式  i-- ,再将i减1

                                         此时,i的值的是0, 表达式 i-- 的值也是1

                            (3).再将i--的值赋给i

                        i 的值的变化过程,由1变成了0,又由0变成了1

 

 

                   与  i=++i  一样的,这样 i=--i 写,也会出现提示

                           

                   自减运算(--i)

                            int i=1;

                            i=--i;

                            (1).--的优先级高,执行--,再执行=

                            (2).--i,先将i减1,然后赋给表达式  --i

                                          此时,i的值的是0, 表达式 --i 的值也是0

                            (3).再将 --i的值赋给 i

                       i的值的变化过程,由1变成了0,又由0变成了0

 

        上面的可以这样写:

          

 

如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】。
如果,您希望更容易地发现我的新博客,不妨点击一下左下角的【关注我】。
如果,您对我的博客所讲述的内容有兴趣,请继续关注我的后续博客,我是【刘超★ljc】。

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

posted @ 2014-04-15 23:02  刘超★ljc  阅读(285)  评论(0编辑  收藏  举报