daniilkk Asked:2020-09-17 04:27:00 +0000 UTC2020-09-17 04:27:00 +0000 UTC 2020-09-17 04:27:00 +0000 UTC Java中的隐式类型转换 772 我学习 Java,我读过 Schildt。我读过很多次,Java 是一种强类型语言。为什么下面的代码会抛出错误 int i = 10; i = i / 2.5; i这段代码工作正常并为4? int i = 10; i /= 2.5; java 2 个回答 Voted Denis 2020-09-17T14:09:41Z2020-09-17T14:09:41Z 类型操作 i /= 2.5; 是一个自动铸造操作,可以写成 i = (int) i/2.5; 与 double d = 1d; int i = 1; i = i * d; // ошибка i *= d; // нет ошибки 对于递增和递减的操作,情况类似。 Best Answer Roman C 2020-09-17T06:59:44Z2020-09-17T06:59:44Z 这就是赋值运算符的工作方式,如果变量是 typeint而不是i / 2.5type double,那么您不能在没有显式转换的情况下将 type 的值分配给double类型int。 也就是说,类型检查是在为变量赋值之前执行的。在第二种情况下,断言是将值转换为操作数类型的表达式,即可以执行操作并返回到应该存储值的变量的类型。那是 int i = 10; d = i /= 2.5; 也可以,因为在赋值之前将值int转换为没有精度损失,反之则不正确并导致错误。double
类型操作
是一个自动铸造操作,可以写成
与
对于递增和递减的操作,情况类似。
这就是赋值运算符的工作方式,如果变量是 type
int而不是i / 2.5typedouble,那么您不能在没有显式转换的情况下将 type 的值分配给double类型int。也就是说,类型检查是在为变量赋值之前执行的。在第二种情况下,断言是将值转换为操作数类型的表达式,即可以执行操作并返回到应该存储值的变量的类型。那是
也可以,因为在赋值之前将值
int转换为没有精度损失,反之则不正确并导致错误。double