Adding to what Henry posted,
Autoboxing is the automatic conversion that the Java compiler makes between the primitive types and their corresponding object wrapper classes
https://docs.oracle.com/javase/tutorial/java/data/autoboxing.html
This means that you no longer have to write it as :
Integer in = new Integer(10);
or
Character ch = new Character('c');
Instead, you use a shorter code to do the same as
Integer integer = 10;
Character ch = 'c';
Secondly, the implicit cast allows you to set a variable with value thats allowed to fit into it since widening is allowed and narrowing is not (without typecast)
Note that the following code would still work:
Long longValue = (long) 10;