首页 > 项目 > 当前页面

java中a=a+b和a+=b真的一样吗?

2025-01-13 NEW个对象

这是一道笔试题,说实话我就是再复习两年,也不会复习到这个题。

既然遇到了,就了解清楚吧:

a = a+b

如果 a 和 b 是不同类型的,比如 a 是 int 类型而 b 是 byte 类型,b 会被提升为 int 类型,然后进行加法运算。如果你试图将结果赋值回一个较小的数据类型,比如 byte,将会出现编译错误,除非你使用显式类型转换。

b+=a

1、如果 a 和 b 类型不同,Java 会自动将 a + b 的结果类型转换为 a 的类型,然后赋值给 a。这意味着即使 a 和 b 的类型不同,你也不会得到编译错误。

例如,如果 a 是 byte 类型而 b 是 int 类型,a += b 会自动将 a + b 的结果从 int 转换为 byte 类型,然后赋值给 a,这个过程不需要显式类型转换。

实战例子:

byte b=233,byte a=233,b= a+b,与b+=a的区别。


因为 a 和 b 是 byte 类型,而在 Java 中,所有小于 int 的整数类型(byte、short 和 char)在参与算术运算时会被自动提升为 int 类型。

所以a+b的类型是int,b是char,所以为报编译错误。


b += a 是复合赋值运算符的写法,等价于 b = (byte)(b + a),因为b=233,a=233,所以存在溢出风险。

相关文章

  • 三数之和:回溯通过排序去重解法

    三数之和是经典的数组与回溯算法问题,核心目标是在整数数组中找到所有不重复的三元组,使其和为 0。 该问题在面试中常用于考察:搜索能力 + 去重逻辑 + 剪枝优化,属于典型中高频算法题。三数之和是经典的数组与回溯算法问题,核心目标是在整数数组中找到所有不重复的三元组,使其和为 0。 该问题在面试中常用于考察:搜索能力 + 去重逻辑 + 剪枝优化,属于典型中高频算法题。

    NEW个对象 2026-06-08

  • 死锁详细介绍

    死锁是指两个或多个线程互相等待对方占用的资源,而永远无法继续执行下去的情形。

    NEW个对象 2025-01-10

  • cglib与jdk代理的区别

    JDK 动态代理: 只支持接口代理。它通过反射机制生成一个实现了指定接口的代理类。 代理对象只能调用接口中定义的方法。 CGLib 动态代理: 通过继承方式生成代理类。它可以代理没有实现接口的类。 代理对象可以调用类中的所有方法(除了final方法)。

    NEW个对象 2025-01-18

NEW个对象 NEW个对象
JAVA是世界上最好的语言