Java中Autoboxing和Unboxing适用的运算符有哪些?
自动装箱/拆箱适用的其他运算符
你已知的适用场景:赋值运算符=、取余运算符%、复合赋值运算符+=,除此之外的适用场景如下:
- 所有基础算术运算符:
+、-、*、/、一元负号-、自增++、自减--,只要操作数包含包装类型,都会先拆箱为基础类型再执行计算 - 比较运算符:
- 大小比较类
>、<、>=、<=:只要两边有一个是包装类型,就会触发拆箱后比较数值 - 等值比较
==:仅当一边是基础类型、另一边是包装类型时,才会拆箱后比较数值;如果两边都是包装类型,直接比较对象内存地址,不触发拆箱
- 大小比较类
- 逻辑运算符:
&&、||、!如果操作数为Boolean包装类型,会自动拆为boolean基础类型再运算 - 位运算符:
&、|、^、~、左移<<、右移>>、无符号右移>>>涉及包装类型操作数时,均先拆箱再运算 - 其余复合赋值运算符:除
+=外,-=、*=、/=、%=、&=、|=、^=、<<=、>>=、>>>=所有复合赋值场景都会触发拆箱计算,计算完成后自动将结果装箱赋值给包装类型变量 - 三目运算符
?::如果两个返回分支分别对应基础类型和包装类型,会自动触发拆箱/装箱统一类型后再返回结果
内容的提问来源于stack exchange,提问作者Steven
相关产品推荐
相关产品推荐

