以下作品
float a=3;
但以下不是:
Float a=3;
难道不应该将 3 自动提升为 float(因为扩大转换不需要显式转换)然后装箱为 Float 类型吗?
是因为我在 Khalid Mogul 的 Java 书中读到的一条规则吗?
Widening conversions can't be followed by any boxing conversions
最佳答案
Float a=3;
不起作用的原因是编译器将 3
包装到它的 Integer 对象中(本质上,编译器这样做:Float a = new Integer(3);
并且这已经是一个编译器错误)。 Float 对象不是 Integer 对象(即使它们来自同一个 Number
对象)。
以下作品:
Number a = 3;
本质上由编译器翻译为:
Number a = new Integer(3);
或如 Joachim Sauer 所述,
Number a = Integer.valueOf(3);
希望这对您有所帮助。
关于java - 将整数值分配给Java中的Float包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3675365/