加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java复合赋值运算符和赋值运算符

发布时间:2020-12-15 08:43:33 所属栏目:Java 来源:网络整理
导读:我在 java中理解复合赋值运算符和赋值运算符时遇到了一些问题.有人可以向我解释这两个操作符是如何运作的吗? (Somwhere我发现了一个非常好的示例代码,使用临时变量来解释工作,但遗憾的是我已经失去了它.)非常感谢你的优势.这是我的小例子代码(我已经知道前
我在 java中理解复合赋值运算符和赋值运算符时遇到了一些问题.有人可以向我解释这两个操作符是如何运作的吗? (Somwhere我发现了一个非常好的示例代码,使用临时变量来解释工作,但遗憾的是我已经失去了它.)非常感谢你的优势.这是我的小例子代码(我已经知道前缀和后缀运算符之间的区别):

int k = 12;
       k += k++;   
       System.out.println(k);  // 24 -- why not (12+12)++ == 25?

       k = 12;
       k += ++k; 
       System.out.println(k); // 25 -- why not (1+12)+(1+12) == 26?               

       k = 12;
       k = k + k++; 
       System.out.println(k); // 24 -- why not 25? (12+12)++?

       k = 12;
       k = k++ + k; 
       System.out.println(k); // 25 -- why not 24 like the previous one?

       k = 12;
       k = k + ++k; 
       System.out.println(k); // 25 -- OK 12+(1+12)

       k = 12;
       k = ++k + k; 
       System.out.println(k); // 26 -- why?

解决方法

请注意,在所有情况下,对k的赋值都会覆盖右侧可能发生的任何增量.

将评论放在一行:

int k = 12;
   k += k++;   
   System.out.println(k);  // 24

k表示在使用该值后递增,因此这与编码k = 12 12相同

k = 12;
   k += ++k; 
   System.out.println(k); // 25

??k表示在使用该值之前递增,因此这与编码k = 12 13相同

k = 12;
   k = k + k++; 
   System.out.println(k); // 24

k表示在使用该值后递增,因此这与编码k = 12 12相同

k = 12;
   k = k++ + k; 
   System.out.println(k); // 25

k表示在使用该值后递增,因此这与编码k = 12 13相同

k = 12;
   k = k + ++k; 
   System.out.println(k); // 25

??k表示在使用该值之前递增,因此这与编码k = 12 13相同

k = 12;
   k = ++k + k; 
   System.out.println(k); // 26

??k表示在使用该值之前递增,然后再次使用该值,因此这与编码k = 13 13相同

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读