Java语言基础(九)

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

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

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

        Java语言基础(九)-LMLPHP

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

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

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

          Java语言基础(九)-LMLPHP

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

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

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

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

下图是从网上找的

           Java语言基础(九)-LMLPHP 

++ 的优先级是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语言基础(九)-LMLPHP

  提示上说,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语言基础(九)-LMLPHP

自减运算 (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语言基础(九)-LMLPHP

自减运算(--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语言基础(九)-LMLPHP

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

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

05-11 14:42