为什么不能将基本类型(例如 double)转换为对象(例如 Byte)?
double x = 99;
Byte r = (Byte) x; // Error: Cannot cast from double to Byte
System.out.println(r);
Java不会隐式缩小原始值,例如从 double
到 byte
,因此可以通过装箱转换将其显式地强制转换为 Byte
。这可防止意外精度损失。
您可以对 double
显式地强制转换为 byte
(小写);然后 Java 将隐式地将 byte
装箱成 Byte
。当您将原始值显式地强制转换为较窄的范围类型时,那么您告诉编译器:“是的,我知道可能会失去精度,但我仍想进行此转换。”
Byte r = (byte) x;