Java中为浮点包装器分配整数值的装箱
以下作品
float a=3;
但以下情况并非如此:
Float a=3;
3不应该自动升级为浮点型(因为加宽转换不需要显式转换),然后装箱为浮点型吗
这是因为我在Khalid Mogul的Java书中读到了一条规则吗
Widening conversions can't be followed by any boxing conversions
你可以在下面搜索框中键入要查询的问题!
以下作品
float a=3;
但以下情况并非如此:
Float a=3;
3不应该自动升级为浮点型(因为加宽转换不需要显式转换),然后装箱为浮点型吗
这是因为我在Khalid Mogul的Java书中读到了一条规则吗
Widening conversions can't be followed by any boxing conversions
# 1 楼答案
Float a=3;
不起作用的原因是编译器将3
包装到它的整数对象中(本质上,编译器是这样做的:Float a = new Integer(3);
,这已经是一个编译器错误)。Float对象不是Integer对象(即使它们来自同一个Number
对象)以下工作:
本质上,编译器将其翻译为:
或者正如约阿希姆·绍尔所说
希望这有帮助
# 2 楼答案
浮球a=3.0f;会有用的
# 3 楼答案
原语和包装器之间进行装箱/拆箱转换,并且从一个数字原语升级到另一个数字原语。但是Java不能进行两次这种转换(在您的例子中,从int转换为Float)