Spm*_*mmr 3 java double byte casting object
为什么不能将原始值(例如,double)强制转换为Object(例如,Byte)?
double x = 99;
Byte r = (Byte) x; // Error: Cannot cast from double to Byte
System.out.println(r);
Run Code Online (Sandbox Code Playgroud)
Java不会隐式缩小原始值,例如从doubleto 缩小byte,以便您可以Byte通过装箱转换将其明确地转换为a .这可以防止意外丢失精度.
您可以做的是明确地将其double转换为byte(小写); 那么Java将隐式地将其打包byte成一个Byte.当你明确地将原始值转换为更窄的范围类型时,你告诉编译器,"是的,我知道我可能会失去精度,但无论如何我想要这个转换."
Byte r = (byte) x;
Run Code Online (Sandbox Code Playgroud)