В консоль получаю [I@50040f0c, вместо массива - Java

Code:

    public static void main(String[] args) {
        int[] arrayResult = readArray();
        System.out.print(arrayResult);
    }

    public static int[] readArray () {
        int [] arr;
        int n;
        Scanner in = new Scanner(System.in);
        n = in.nextInt();
        arr = new int[n];
        for (int i = 0; i < n; i++)
            arr[i] = in.nextInt();
        return  arr;
    }

Ответы (3 шт):

Автор решения: Igor

Функция сама ничего "не показывает в консоле". Чтобы вывести что-то в консоль, надо написать для этого код.

int[] result = readArray();
// output result ...
for (int r : result) {
  System.out.println(r);
}
→ Ссылка
Автор решения: Кирилл Малышев
System.out.print(Arrays.toString(arrayResult));
→ Ссылка
Автор решения: Vadik

Чтобы понять, откуда берется [I@50040f0c, заглянем в реализацию метода print(). Там вы увидите что-то вроде:

public void print(Object obj) {
    this.write(obj == null ? "null" : obj.toString());
}

То есть, когда мы делаем print(array), под капотом вызывается array.toString().

Теперь глянем, что делает метод toString():

public String toString() {
    return this.getClass().getName() + "@" + Integer.toHexString(this.hashCode());
}

Получается, что при распечатывании массивов с помощью print() мы на самом деле распечатываем не содержимое этого массива, а нечто, что называется хэш-кодом объекта.

Чтобы распечатать содержимое массива, используйте хелпер Arrays.toString():

System.out.print(Arrays.toString(array))
→ Ссылка