you can read on Autoboxing here:
Autoboxing is the automatic conversion that the Java compiler makes between the primitive types and their corresponding object wrapper classes. For example, converting an int to an Integer, a double to a Double, and so on. If the conversion goes the other way, this is called unboxing.
and as you can read at the end, the types tat are auto boxed are: boolean, byte, char, float, int, long and short. array are not autoboxed
it might seems very logical for you that the compiler will do that, but that kind of behavior is very complicated and required a very sophisticated compiler.