java - 自动装箱和拆箱适用于哪些算子?

标签 java

我在这看到了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/

相关文章:

java - 由于 android studio 和 adb.exe 的更新,我无法运行我的程序

java - 在gwt中添加外部js

java - 为什么 Android 在反射到 activityManagerNative setAlwaysFinish() 时抛出 invocationtargetexception

java - Java 判断一张图片是否为灰度

java - Oracle BLOB(使用 Base 64 编码)到字符串

java - MULTIPART_FORM_DATA : No injection source found for a parameter of type Response

java - 64 位 Java 无法通过 ODBC Access 32 位 MS Access 数据库

java - 只有毫秒的 SimpleDateFormat

c# - Java 或 C# 中长轮询/Comet 的最佳选择?

java - 带有用于 javadoc doclet 的自定义 xml 序列化程序的 ClassNotFoundException