...
When using binary operators with operands of different types, be aware of the implicit casts.
 In particular (section 5.6.2, "Binary Numeric Promotion", from the java specification):
- If any of the operands is of a reference type, unboxing conversion 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.
 
...