These are not examples of upcasting and downcasting, as others have described. However, we can talk about widening and narrowing primitive type conversions (for instance, going from int to long is a widening conversion and hence can be done implicitly.) In this particular case (float/int), however, the conversion is a bit different.
There is an implicit conversion from int to float, but the conversion can actually still lose precision, due to the inability of float to represent integral numbers exactly. This is worth knowing, as it bends the general rule that implicit conversions should never lose information. This is really only noticeable if you convert integers to floats, do a bunch of accumulating math with them and then try converting back to an int. In these cases, the approximation error can accumulate, producing incorrect results if you assumed the floats were perfect representations of decimal numbers.