Yes, it is converted back to a long, and then the normal rules of binary promotion will promote it to a float since the other operand is a float.

For reference, section 5.6.2 of the

Java Language Specification defines binary numeric promotion.

*5.6.2 Binary Numeric Promotion*

When an operator applies binary numeric promotion to a pair of operands, each of which must denote a value that is convertible to a numeric type, the following rules apply, in order, using widening conversion (�5.1.2) to convert operands as necessary:

* If any of the operands is of a reference type, unboxing conversion (�5.1.8) is performed. Then:

* If either operand is of type double, the other is converted to double.

* Otherwise, if either operand is of type float, the other is converted to float.

* Otherwise, if either operand is of type long, the other is converted to long.

* Otherwise, both operands are converted to type int.

After the type conversion, if any, value set conversion (�5.1.13) is applied to each operand.

Binary numeric promotion is performed on the operands of certain operators:

* The multiplicative operators *, / and % (�15.17)

* The addition and subtraction operators for numeric types + and - (�15.18.2)

* The numerical comparison operators <, <=, >, and >= (�15.20.1)

* The numerical equality operators == and != (�15.21.1)

* The integer bitwise operators &, ^, and | (�15.22.1)

* In certain cases, the conditional operator ? : (�15.25)