gpt4 book ai didi

java - 进行了多少次拆箱?

转载 作者:行者123 更新时间:2023-11-30 06:45:38 26 4
gpt4 key购买 nike

这是我的代码:

Integer x=5;
int y=x+x;
System.out.println(y);

我的问题很简单。在第一行显然有一个拳击发生。但是在下一行,是进行了两次还是一次拆箱?我的问题实际上意味着:两个 Integer 实例 x 是否被拆箱、添加,然后存储在 int y 变量中,或者两个 Integer 作为 Integer 实例添加,然后结果被拆箱并存储?附言请注意,上面的代码除了帮助我理解拆箱的概念外没有其他用途。非常感谢您的宝贵时间!

最佳答案

我会说发生了 2 次拆箱转换

x 的类型肯定是Integer,算术表达式x + x 要求两个操作数都被拆箱。 JLS § 15.5指出

if the type of an expression is a primitive type, then the value of the expression is of that same primitive type.

此外,根据 § 15.18.2 ,

Binary numeric promotion is performed on the operands (§5.6.2).

Note that binary numeric promotion performs value set conversion (§5.1.13) and may perform unboxing conversion (§5.1.8).

The type of an additive expression on numeric operands is the promoted type of its operands.

所以这种算术表达式的结果类型是原始数字类型,所以 x + x 产生一个 int

这个结果存储到y中,不需要转换。

关于java - 进行了多少次拆箱?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48584016/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com