Массивы
Тема дорожной карты · Java
Массивы в Java — это структуры данных фиксированного размера с упорядоченными элементами одного типа, хранящимися в непрерывной памяти кучи JVM, являющиеся простейшим примитивом коллекций, доступным в языке. Массив объявляется и выделяется как int[] numbers = new int[10]; или инициализируется встроенно как String[] names = {"Alice", "Bob"};, доступ к элементам осуществляется по нулевому индексу с проверкой границ во время выполнения JVM — обращение за пределами массива бросает ArrayIndexOutOfBoundsException. Утилитный класс java.util.Arrays предоставляет Arrays.sort(), Arrays.binarySearch(), Arrays.fill() и Arrays.copyOfRange() для распространённых операций без написания ручных циклов. Многомерные массивы, такие как int[][] matrix = new int[3][4];, фактически являются массивами ссылок на массивы, что важно понимать при использовании Stream API или конвертации в List через Arrays.asList(). Массивы Java лежат в основе высокоуровневых Collections типа ArrayList, и понимание их расположения в памяти и характеристик производительности обязательно перед работой с полным Java Collections Framework.
Как это работает
Массивы покрывает классы (единица компиляции), примитивные типы (int, long, double, boolean — не объекты), reference-типы (объекты, массивы, String — на heap), управление (if/else, switch — теперь со стрелочной формой и pattern matching в 21+), циклы (for, while, for-each), пакеты + импорты, модификаторы доступа (public/protected/package-private/private). Современная Java: var для type inference (10+), текстовые блоки """...""" (15+), records (16+), sealed classes (17+), pattern matching (21+).
Когда применять
Современные фичи — при таргете 17+: records для DTO (срезает 90% бойлерплейта), var для type-inference локальной переменной (когда RHS очевиден), текстовые блоки для multi-line строк, sealed-типы для закрытых иерархий. var — не для полей и возвратов методов (теряется читаемость). Optional — осторожно; никогда .get() без проверки; используйте .orElse(), .map(), .ifPresent().
Типичные ошибки
Ловушки Массивы: сравнение строк == вместо .equals() (классика); примитивные массивы там, где коллекции лучше; игнор Optional и возврат null (NPE-чума продолжается); String s = ""; for(...) s += x; (квадратично — используйте StringBuilder). Читайте Java-туториал для вашей версии; старые туториалы отстают.
Связанные понятия
Полезные ресурсы
Проверить знания (1)
Загрузка вопросов…