面试题答案
一键面试- 结果类型:
double
。 - 计算过程及数据类型转换规则:
- 首先计算
f * d
,float
类型的f
(值为20.5f
)与double
类型的d
(值为30.5
)相乘。根据Java的自动类型转换规则,当参与运算的两个操作数类型不同时,会将小范围类型自动转换为大范围类型。float
类型的范围小于double
类型,所以f
会自动转换为double
类型,然后进行乘法运算,结果为double
类型(20.5 * 30.5 = 625.25
,这里的结果是double
类型)。 - 接着计算
b + i
,byte
类型的b
(值为5
)与int
类型的i
(值为10
)相加。byte
类型会自动转换为int
类型,因为int
类型范围大于byte
类型,然后进行加法运算,结果为int
类型(5 + 10 = 15
)。 - 最后计算
(b + i) + (f * d)
,即int
类型(值为15
)与double
类型(值为625.25
)相加。由于int
类型范围小于double
类型,int
类型会自动转换为double
类型,最终结果为double
类型(15 + 625.25 = 640.25
)。
- 首先计算
所以表达式b + i + f * d
的结果类型是double
。