我在这看到了documentation自动装箱和拆箱适用于 =
运算符,而拆箱适用于 %
运算符和 +=
运算符。
但是自动装箱和拆箱适用于哪些其他运算符?
最佳答案
如果你有一个表达式产生原始类型,但你在需要它的包装类的地方使用它,就会发生自动装箱,如下所示:
Integer i=1+2;//int is boxed to Integer
类似地,如果您有一个生成包装器类的表达式,但预期会出现相应的原始表达式,则会发生自动拆箱,如下所示:
Integer boxed=Integer.valueOf("1337");//some boxed integer
int unboxed=boxed;//automated unboxing
赋值和方法调用都可能导致隐式装箱和拆箱。
由于有些运算符支持原始类型但不支持包装类,因此如果与这些运算符一起使用,编译器将隐式取消装箱的原语。这些运算符都是算术运算符、 boolean 运算符和比较运算符( +
、 -
、 *
、 /
、 %
、 >>
、 <<
、 >>>
、 ^
6,79154| 6,79154| , &
, &&
, !
, ~
, |
, ||
, >
, <
, >=
, <=
, ++
, --
)
使用将左侧变量分配给计算结果的运算符(?
等)可能会导致隐式拆箱(用于计算)和拆箱(用于赋值)
除此之外,+=
(和 ==
)运算符可以导致自动拆箱,如果一个操作数是原始表达式而另一个是导致相应包装类的值的表达式。
关于java - 自动装箱和拆箱适用于哪些算子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69145726/