Java语言基础(九)

Java语言基础(九)

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

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

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

                  

        Java语言基础(九)_第1张图片                  

 

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

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

 

 

 

 

 

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

                           

           Java语言基础(九)_第2张图片

                           

                  

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

 

                           

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

 

 

                           

                           

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

 

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

                           

                            下图是从网上找的

 

           Java语言基础(九)_第3张图片                                  

                           

                            ++ 的优先级是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的提示

                      

          Java语言基础(九)_第4张图片

 

                     提示上说,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),所以才出现那句

 

 

                  上面的可以这样写:

                           

         Java语言基础(九)_第5张图片

 

                  

                  自减运算 (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 写,也会出现提示

                           Java语言基础(九)_第6张图片

                   自减运算(--i)

                            int i=1;

                            i=--i;

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

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

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

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

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

 

        上面的可以这样写:

          Java语言基础(九)_第7张图片

 

你可能感兴趣的:(Java语言基础(九))