I understand that the following code won't work
Float a=3
because its translated as Float a=Integer.valueOf(3). We'll have a Float reference on the LHS and an Integer object on the RHS, which is incompatible. But :
1.
`Short a=3;`
This works, though here again, we'll have a Short reference on the LHS and an Integer object on the RHS.
2.
Float a=(Float) 3
If we hadn't typecasted 3, it would have been translated as Integer.valueOf(3). Now, will it be translated as Float.valueOf(3) ?