Длина массива в Java - Вопросы
Всего: 5 вопросов
1. Как узнать длину массива в Java?
Как узнать длину массива в Java?
Длина массива хранится в его публичном поле length, к которому обращаются через точку и без скобок: array.length. Массив — это объект, и его длина заполняется JVM в момент создания. Значение задаётся один раз и больше не меняется. Обратите внимание: length — это поле, поэтому запись со скобками array.length() не скомпилируется.
2. Можно ли изменить длину массива после его создания?
Можно ли изменить длину массива после его создания?
Нет. Длина массива фиксируется при создании навсегда, а поле length доступно только для чтения — присваивание array.length = 10; не скомпилируется. Чтобы получить массив другого размера, нужно создать новый и скопировать элементы, удобнее всего через Arrays.copyOf(array, newLength). Если размер должен часто меняться — используйте ArrayList, который расширяется автоматически, а его размер возвращает метод size().
3. В чём разница между length, length() и size() в Java?
В чём разница между length, length() и size() в Java?
length — это поле (без скобок), оно есть у массивов: array.length. length() — это метод строк: str.length() у String и StringBuilder. size() — это метод коллекций: list.size() у List, Set, Map. Путаница между полем массива и методом строки — одна из самых частых ошибок новичков и популярный вопрос на собеседовании.
4. Как узнать общее количество элементов двумерного (в том числе рваного) массива?
Как узнать общее количество элементов двумерного (в том числе рваного) массива?
Двумерный массив в Java — это «массив массивов», поэтому array.length даёт только число строк, а array[i].length — длину конкретной строки. Общее количество элементов нужно посчитать, просуммировав длины всех строк: for (int[] row : array) total += row.length;. Для прямоугольного массива можно умножить array.length на array[0].length, но для рваного (jagged) массива, где строки разной длины, это даст неверный результат.
5. Что вернёт обращение к length, если массив пустой или равен null?
Что вернёт обращение к length, если массив пустой или равен null?
Для пустого массива (new int[0]) поле length вернёт 0 — это корректный объект нулевой длины. А если ссылка равна null, объекта массива не существует, и обращение к length выбросит NullPointerException. Поэтому массивы, приходящие извне, сначала проверяют на null и только потом читают длину: if (array != null && array.length > 0) { ... }. Пустой массив и null — принципиально разные вещи.