Java 是这样确定条件表达式[1]类型的:
如果第二个和第三个操作数可以被转换成数字类型,那么除非特殊情况,否则表达式类型会是第二个和第三个操作数的双目数字类型提升 (binary numeric promotion) [2]。
所以,int 被类型提升成了 double.
参考资料:
[1] https://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.25
[2] https://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html#jls-5.6.2
感谢 @My_Aim_Sucks 为解决这个问题提供的帮助
如果第二个和第三个操作数可以被转换成数字类型,那么除非特殊情况,否则表达式类型会是第二个和第三个操作数的双目数字类型提升 (binary numeric promotion) [2]。
所以,int 被类型提升成了 double.
参考资料:
[1] https://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.25
[2] https://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html#jls-5.6.2
感谢 @My_Aim_Sucks 为解决这个问题提供的帮助