Вопрос №573 от пользователя Михаил Соколовский в уроке «Модуль 4. Урок 2. Массивы в Java.», курс «Введение в Java»

Михаил Соколовский

Доброго времени суток!

Хотелось бы услышать от знающих людей комментарии по поводу заданий с инициализацией массивов. В официальной документации четкого ответа не нашел. Желательно каждый случай снабдить коротким объяснением. Заранее благодарю!

2 3

Вячеслав Ковалевский

  1. int[] x = {2, 5, 6}; - верно ибо это просто укороченная запись: int[] x = new int[]{2, 5, 6};
  2. int x[][] = new int[]{{2}, {3, 4}}; - тут можно заметить не соответствие мерности, слева двух мерный массив, справа одномерный, из-за чего и ошибка;
  3. int x[][] = new int[][]{{2}, {3, 4}}; - тот же пример но мерность массива слева и с права одинаковая;
  4. int x[][] = new int[][]{{}}; - то же самое что и прошлый пример просто массив пустой без каких либо значений (матрица 0 на 0);
  5. int x[][] = new int[2][2]; - обычно создание массива с дефектными значениями в нем (для int это 0). Т.е. массив 2 на 2 и все ячейки в нем будут равны 0; В некотором плане это короткая запись от: int x[][] = new int[2][]; // создаем массив массивов x[0] = new int[2]; x[1] = new int[2];
  6. int x[][] = new int[2][]; - поскольку 2-мерный массив это массив массивов то и такое создание корректно, мы создаем массив верхнего уровня с размером 2 однако не создаем подмассивы, предполагается что потом кто-то до-создаст под массивы как то так: x[0] = new int[2]; x[1] = new int[2];
  7. int[2] x = new int[]; - это бред так как мы пытаемся создать массив ни указав его размер (или начальные данные), Java просто не в состоянии узнать какого размера массив создать;
  8. int[2] x = new int[2]; - тип ссылки (слева) влючает в себя разве массив, что абсолютно бессмысленно так как ссылка не должна знать о размере массива а только о типе объекта на который она указывает
  9. int[] x = new int[3]{2, 3, 4}; - тут одновременно заданы и начальные значения массива и его длинна, если бы синтаксис позволял устанавливать эти два значения одновременно то можно было бы сделать нечто бредовое вроде: int[] x = new int[1]{2, 3, 4}; - отсюда совсем не понятно какого размера должен быть массив
  10. int[] x = new int[]{2, 3, 4}; - создание одноименного массива с начальными значениями в нем (длинной 3);
  11. int[] x = new int[2]; - создание одноименного массива с дефектными значениями в нем (длинной 2);

Как можно увидеть по этим примером для создания массива Java должна знать или длину массива (и тогда все его значения будут заполнены значениями по умолчанию) или же нужно знать начальные значения массива (и тогда Java сможет посчитать длину самостоятельно), все остальные варианты приведут к ошибки компиляции

6

Михаил Соколовский

Большое спасибо за развернутый ответ! В процессе практики я тоже пришел к такому выводу, что для создания массива Java должна знать или его длину или же начальные значения. Немного запутывает возможность указания размерности массива как после типа, так и после его названия. Если я правильно понимаю, вот такие записи с точки зрения Java эквивалентны: int[] x[] и int[][] x? Небольшой комментарий: значения, наверное, "дефолтные", а не "дефектные" :)

3

Используйте Хекслет по максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Даю согласие на обработку персональных данных, соглашаюсь с «Политикой конфиденциальности» и «Условиями оказания услуг»

Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Фронтенд-разработчик
Профессия
Разработка фронтенд-компонентов веб-приложений
25 мая 10 месяцев
Иконка программы Python-разработчик
Профессия
Разработка веб-приложений на Django
25 мая 10 месяцев
Иконка программы PHP-разработчик
Профессия
Разработка веб-приложений на Laravel
25 мая 10 месяцев
Иконка программы Node.js-разработчик
Профессия
Разработка бэкенд-компонентов веб-приложений
25 мая 10 месяцев
Иконка программы Fullstack-разработчик
Профессия
Новый
Разработка фронтенд и бэкенд компонентов веб-приложений
25 мая 16 месяцев
Иконка программы Верстальщик
Профессия
Вёрстка с использованием последних стандартов CSS
в любое время 5 месяцев
Иконка программы Java-разработчик
Профессия
Разработка приложений на языке Java
25 мая 10 месяцев
Иконка программы Разработчик на Ruby on Rails
Профессия
Создает веб-приложения со скоростью света
25 мая 5 месяцев