帮忙么网 > JAVA > 当前页面

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,所以存在溢出风险。

相关文章

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

    这是一道笔试题,说实话我就是再复习两年,也不会复习到这个题。 既然遇到了,就了解清楚吧:

    NEW个对象 2025-01-13

  • 链表反转

    链表反转

    NEW个对象 2025-02-12

  • 有哪些数据安全的方案?

    1、锁 2、单线程,比如:redis 3、不共享变量,比如:ThreadLocal 4、原子操作,比如:AtomicInteger 5、不可变模式,比如:一旦创建不能修改,修改就会再次创建一个新的对象,String 6、读写分离,写时复制,比如:CopyOnWriteArrayList

    NEW个对象 2025-02-11

推荐文章