在Java中,关于a=a+b与a+=b的区别「建议收藏」

在Java中,关于a=a+b与a+=b的区别「建议收藏」在Java中,关于a=a+b与a+=b的区别

大家好,又见面了,我是你们的朋友全栈君。

就单纯的执行这两条语句,不考虑编译器的优化的话,a=a+b的执行效率是低于a+=b的,因为它多进行了一步中间变量的操作,而且会多占用一个变量的空间。而Java编译器默认对其进行了优化,优化之后两条语句都当做 a+=b来执行了,所以实际上是没有任何却别的。

 

其次说一下有关类型转换的区别。

public class Test {
 
 public static void main(String[] args){
  int a = 2;
  float b = 6;
  a+=b; //right
//  a=a+b; //error
  a=(int) (a+b); //right
 }
}

当使用a=a+b的时候,会抛出”Exception in thread “main” java.lang.Error: Unresolved compilation problem: Type mismatch: cannot convert from float to int“的异常,这是可以理解的,如果不使用(int)强制类型转换的话,float 是不能直接复值给int 变量的

即a+=b进行了强制类型转换,和 a=(int)((float)a+b)是等价的!

原因:在Java中,在基本类型进行算术运算的时候,会发生小字节类型向大字节类型转换的现象。如图中 int 类型和float类型进行加法运算时会将 a 先转换为float类型,然后再和b相加。这样结果类型变成了float类型,如果这时候试图把float类型赋值给a时便会抛异常。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106054.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Windows环境下搭建SVN服务器

    Windows环境下搭建SVN服务器如要转载,请注明来源,小石头的博客: http://blog.csdn.net/lu1024188315使用 VisualSVNServer来实现主要的 SVN功能则要比使用原始的 SVN和Apache相配合来实现源代码的 SVN管理简单的多,下面就看看详细的说明。VisualSVNServer的下载地址如下,是免费的,随意不必有顾虑http://www.visua

    2022年7月19日
    19
  • Java上传文件到数据库「建议收藏」

    Java上传文件到数据库「建议收藏」Java上传文件到数据库   首先在开始本文之前推荐一篇我非常喜欢的博主——孤傲苍狼的一篇相关博文。     JavaWeb学习总结(五十)——文件上传和下载        http://www.cnblogs.com/xdp-gacl/p/4200090.html     本文主要介绍如何将文件上传到服务器,并以二进制字符流的形式存入数据库。

    2025年9月14日
    5
  • Windows系统CUDA10.2+CUDNN安装教程

    Windows系统CUDA10.2+CUDNN安装教程Win10系统下如何安装CUDA10.2已经对应的CUDNN。

    2022年5月2日
    36
  • 信赖铃音的PS2游戏目录2017.6

    信赖铃音的PS2游戏目录2017.6信赖铃音PS2无损镜像游戏光碟分类目录淘宝最全1600个游戏上架大家扫我加我微信可以直接在微店或者微信红包购买PS2游戏哦!微信号298337705或者直接扫我或者保存图片长按识别二维码就可以加我了!感谢大家支持信赖铃音的无损PS2游戏光碟选好可以直接给我名单拍件数或者直接用购物车选购店址:https://playstation2.taobao.com/PS2搜索信赖铃音PS…

    2025年8月4日
    3
  • JavaScript数组splice方法

    JavaScript数组splice方法varnumber=[10,3,4,7];//删除第一位元素,0:下标,1:个数varremoved=number.splice(0,1);console.log(number);//[3,4,7]console.log(removed);//[10]varnumber2=[10,3,4,7];//插入元素5和8,1:下标1开始,0:删除0个元素,…

    2022年9月24日
    3
  • 51单片机:LED流水灯(仿真+代码)

    51单片机:LED流水灯(仿真+代码)这次用单片机做个简单的流水灯。先给大家看一下仿真软件的电路(软件为Proteus)上图就是用仿真软件制作的线路原理图AT89C51RC2:单片机BUTTON:按键CAP:电容CRYSTAL:晶振LED-GERRN:LED灯(绿色)RES:电阻接下来是程序部分(软件为keil)#include”reg51.h” //此文件中定义了单片机的一些特殊功能寄存器#include…

    2022年5月26日
    60

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号