众所周知,在java中 a = a+b在大多数情况下都是可以替换为 a +=b的,那么这两种写法有什么区别呢?

public static int test() {System.out.println("aaaa");return 1;}public static void main(String[] args) {int a[] = new int[]{0,1,2,3,4,5,6,7,8,9,10};a[test()] += 1;
}

可以看到在main方法中调用了test()方法,如果a = a+b和a +=b 的区别没有区别,则会在控制台输出两次aaaa,但是结果呢?

可以看到只有一次,所以这里我们可以确定的 的是a += b执行实际过程实际是 是先计算出a的值,然后用一个temp对象存储,之后和b进行相加,然后将值赋值给a引用。

a = a+b 的执行过程则是先计算 a + b,然后再赋值给a引用,给a引用的时候如果 引用a 有计算过程,则会再次计算。

实际上这也就是+=运算符 和 +运算符的区别了。

顺便一提,这两个操作符还有一个区别是+=如果两边的操作数的精度不一样时会自动向低转化,如:


实际上和 a = (short)(a+ 65536);是一样的。

而a = a+b则不会自动转化,需要手动进行强制类型转化。

Java 中 a = a+b和a +=b 的区别相关推荐

  1. Java中,一切皆是对象——java中的对象类型与基本数据类型的区别

    起因:取一个list给另一个list赋值,然后在另一个list中取出进行修改.list其中类型为对象时,String时,基本数据类型时. [java中的对象类型与基本数据类型的区别] #声明和实例化 ...

  2. java堆和栈 常量池_GitHub - han-guang-xue/difference-of-stack-heap-pool: Java中堆、栈和常量池的区别...

    Java中堆.栈和常量池的区别 栈 堆 常量池的概念 首先我们先了解一下概念,Java把内存分成两种,一种叫做栈内存,一种叫做堆内存. 栈内存 存放基本类型的变量数据和对象类型的引用(请注意存放的是引 ...

  3. Java中Array和ArrayList之间的9个区别

    array和ArrayList都是Java中两个重要的数据结构,在Java程序中经常使用. 即使ArrayList在内部由数组支持,了解Java中的数组和ArrayList之间的差异对于成为一名优秀的 ...

  4. java中的NIO和IO到底是什么区别?20个问题告诉你答案

    摘要:NIO即New IO,这个库是在JDK1.4中才引入的.NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多. 本文分享自华为云社区<jav ...

  5. java中list,set,map集合的区别,及面试要点

    Map集合:链接: Map集合的五种遍历方式及Treemap方法 Set集合:链接: Java中遍历Set集合的三种方法 TreeSet集合:链接: Java深入了解TreeSet,和迭代器遍历方法 ...

  6. java中*和**的作用 以及 /和/*和/**的区别

    一.java中*和**的作用 "*"就表示了所有的文件,但是"*"并不包括子目录下的文件: "**"匹配包含任意级子目录中所有的文件: 二. ...

  7. 解析java中方法的重载和重写之间的区别与联系

    解析java中方法的重载和重写之间的区别与联系 1 不同点 1.1 方法重写是在不同的类中(父子类),方法重载是在同一类中 1.2 方法重载最初的目的是构造方法的多样化,方法重写的目的是让重写的方法满 ...

  8. java final 变量 回收_java入门教程-Java中final,finally,finalize三个关键字的区别

    final 当这个关键字修饰一个类时,意味着他不能派生出新的子类,也就是说不能被继承,因此一个类不能被同时声明为abstract和final.当final修饰变量或者方法时,可以保证他们在使用中不会被 ...

  9. 浅谈Java中的Set、List、Map的区别

    就学习经验,浅谈Java中的Set,List,Map的区别,对JAVA的集合的理解是想对于数组: 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),JAVA集合可以存储和操 ...

  10. Java中抽象类、接口、父类直接的区别与联系

    抽象类与接口的区别: 1)抽象类是一个只有变量或方法申明的类,这些变量(属性)和方法都是抽象类型的.抽象类没有对方法的实现. 2)接口则是一个只有方法申明.没有方法的实现,接口的方法也同样是抽象方法, ...

最新文章

  1. 6D位姿估计Point Pair Feature (PPF)算法详解
  2. [Everyday Mathematics]20150222
  3. ORACLE DBA学习笔记--表空间的管理(tablespace)
  4. 敏捷是如何使你跑得更快?
  5. ARMv8体系结构基础05:比较和跳转指令
  6. mybatis if标签字符串判断
  7. 数字电视-DVB介绍
  8. 3DS烧录卡?ACE3DS PRO?这是个闹剧(关于此事的新闻集合)
  9. 2020年下半年信息安全工程师下午真题及答案解析
  10. 【excel】绘制双纵坐标轴的图表
  11. html水晶按钮图片,20个纯CSS3实现的彩色透明水晶按钮
  12. 非线性方程模型及求解实例
  13. 2019 ICPC 上海网络赛 K. Peekaboo
  14. ORAN C平面 Section Type 1
  15. 苹果8屏幕测试软件,iPhone8人脸识别软件
  16. 代理服务器拒绝连接(无法连接到代理服务器)的解决办法
  17. 纯CSS写个绿荫足球场,为世界杯喝彩
  18. GCT的考试成绩终于出来了!
  19. 传奇开区网站如何添加流量统计代码
  20. Apache NiFi系统管理员指南 [ 二 ]

热门文章

  1. 阿里安全潘多拉实验室龙磊:越狱 iOS 11.2,我选了一条最难走的路
  2. ZSTU OJ 3770: 黑帽子 归纳总结
  3. 公司让给客户发国庆祝福短信怎么快速完成
  4. 江苏省专转本计算机专业大类《计算机基础理论 1.2(一)小节习题答案》
  5. ListView和ListBox内部拖拽排序原理
  6. 天地劫服务器维护,天地劫 开服第一天,必坑注意事项
  7. 程序员懂不懂计算机硬件配置清单,你还不懂硬盘,内存和CPU的关系 ?(程序员入门)...
  8. 【redis6.2 官方镜像Dockerfile解读】
  9. 【sql】查询每日活跃用户数/每日新增用户数/每日累计用户数
  10. 摄像头与激光雷达微波雷达的融合算法之五----匈牙利匹配