在5.6.2中的JLS中。二进制数值促销:
当运算符将二进制数字提升应用于一对操作数时,每个操作数必须表示一个可转换为数字类型的值,以下规则适用:
如果任何操作数是引用类型,则将其进行拆箱转换(第5.1.8节)。
使用野生原语转换(第5.1.2节)来转换以下规则指定的一个或两个操作数:
如果一个操作数的类型为double,则另一个将转换为double。
否则,如果其中一个操作数的类型为float,则另一个将转换为float。
否则,如果其中一个操作数的类型为long,则另一个将转换为long。
否则,两个操作数都将转换为int类型。
这使我感到困惑,因为两者 http://www.mathcs.emory.edu/~cheung/Courses/170/Syllabus/04/mixed.html和 https://alvinalexander.com/java/java-int-double-float-mixed-type-division-arithmetic-rules
声明
在执行算术运算之前,将算术运算(+,-,*,/)中的所有浮点值(浮点和双精度)都转换为双精度类型。
据我了解,根据JLS,将1浮点数和1整数相加将导致浮点数。但是,根据其他资料,将1的浮点数和1的整数相加会导致加倍?
答案 0 :(得分:2)
当消息来源提出违反JLS的主张时,很有可能是错误的。在这种情况下,以下内容演示了JLS描述的行为:
kv