Class PrintStream (which is what System.out is) has a dedicated method overload println(char[]) which prints the characters of a char array.
It has no special overloads for other arrays, so when you pass an int[] the called method is println(Object). That method converts the passed object to a string by calling its toString() method.
The toString() method for all arrays is simply the default one inherited from class Object, which displays their class name and default hashcode, which is why it's not so informative. You can use Arrays.toString(int[]) to get a string representation of your int array's contents.
P.S. Contrary to what the doc says, the default hashcode of an object is not typically the object's address, but a randomly generated number.
.toString()PrintStreamclass has a method forarray of charactersand does not have for arrays of any other primitives.toString, which is just theObject.toString.