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) ?