【发布时间】:2020-11-21 09:09:38
【问题描述】:
假设我将 double x 转换为 int,这可以通过截断自动完成。这是否仍被视为隐式转换?隐式转换是否无法将实际值从一种类型转换为另一种类型而不会丢失该值的任何准确性。在这种情况下,我不会丢失 x 值的小数部分吗?我在java docs 中找不到任何关于此的具体内容,所以我想在这里问:
double x = 420.69;
int y = x;
【问题讨论】:
-
这不是隐式转换,这是一个错误。
int y = x;不会编译。 -
在文档中,paragraph 5.1.3 Narrowing Primitive Conversion 对此进行了介绍。由于显式将较宽的类型转换为较窄的类型,这种转换是可能的。
-
隐式转换与显式转换相反。显式转换使用强制转换规则,因此
int y = (int)x;将是显式的。隐式转换缺少强制转换,这意味着程序员可能犯了错误。