在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)
上一篇 2022年4月23日 下午10:20
下一篇 2022年4月23日 下午10:40


相关推荐

  • vim 经典插件大全 转自:http://blog.csdn.net/tge7618291「建议收藏」

    vim 经典插件大全 转自:http://blog.csdn.net/tge7618291「建议收藏」1#============================================================================= 21.查看key相关信息说明的命令 :helpkeycodes 3#========================================================================

    2022年5月30日
    43
  • linux:telnet命令安装

    linux:telnet命令安装一 安装 telnetstep1 rpm qatelnet server 无输出表示 telnet server 未安装 则执行 step2 否则执行 step3 step2 yum yinstallteln server 安装 telnet server step3 rpm qatelnet 无输出表示 telnet 未安装 则执行 step4 否则执行 step5 nbsp nbsp nbsp nbsp root de

    2026年3月19日
    2
  • springcloud的feign原理_SpringMVC运行原理

    springcloud的feign原理_SpringMVC运行原理目录1.什么是Feign?2.OpenFeignvsSpringCloudFeign2.1.OpenFeign2.2.SpringCloudOpenFeign3.SpringCloudFeign的使用4.SpringCloudFeign的源码解析1.什么是Feign?Feign的初衷是:feignmakeswritingjava…

    2022年10月5日
    4
  • @requestmapping参数produces,consumes

    @requestmapping参数produces,consumesproduces 可能不算一个注解 因为什么呢 它是注解 requestMappi 注解里面的属性项 它的作用是指定返回值类型 不但可以设置返回值类型还可以设定返回值的字符编码 还有一个属性与其对应 就是 consumes 指定处理请求的提交内容类型 Content Type 例如 application json text html 他们的使用方法如下 一 produces 的例

    2026年3月16日
    2
  • SHELL学习笔记

    SHELL学习笔记1read 可以一次性读取多个变量 readfirstsec 从文件读取 nbsp readmessage 变量可以用命令替换 var 或者 数组变量的访问 var 0 2 0 脚本名称 1 2 参数 参数个数 没有 10 被解释成 1 和 0 办法 用 shift 移为 while ge nbsp 1 doecho 1shi

    2026年3月18日
    2
  • 矩阵特征值和特征向量详细计算过程(转载)_矩阵特征值的详细求法

    矩阵特征值和特征向量详细计算过程(转载)_矩阵特征值的详细求法1.矩阵特征值和特征向量定义        A为n阶矩阵,若数λ和n维非0列向量x满足Ax=λx,那么数λ称为A的特征值,x称为A的对应于特征值λ的特征向量。式Ax=λx也可写成(A-λE)x=0,并且|λE-A|叫做A的特征多项式。当特征多项式等于0的时候,称为A的特征方程,特征方程是一个齐次线性方程组,求解特征值的过程其实就是求解特征方程的解。 计算:A的特征值和特征向量。计算行列式得化简…

    2025年8月21日
    6

发表回复

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

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