Имеется следующий код:
int[] arr1 = {10, 20, 30, 40};
System.out.println(Arrays.deepToString(arr1));
Здесь компилятор выдаёт ошибку:
incompatible types: int[] cannot be converted to java.lang.Object[]
При этом следующий код компилируется без ошибок:
int[][] arr2 = {{10, 20}, {30, 40}};
System.out.println(Arrays.deepToString(arr1));
Почему int[] не может конвертироваться в Object? Разве массивы примитивов не являются объектами? И почему при этом двумерный массив примитивов int[][] в Object прекрасно конвертируется?
Всё правильно говорит.
int[] - Object, а int[][] это массив Objectов (Object[], где каждый элемент - int[]), то есть массив массивов, где внутренний массив является объектом. int[] - массив примитивов, который не умеет автобокситься в Integer[] (вы ведь на это намекаете в вопросе?).
Запутанно, но, надеюсь, понятно.
Для примитивных одномерных массивов есть Arrays.toString(...)
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости