Создание пустого массива в Java: методы инициализации

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Чтобы создать пустой строковый массив, нужно записать:

Java
Скопировать код
String[] emptyArray = {};

Этот метод создания пустого массива компактен, надежен и снижает вероятность возникновения NullPointerException по сравнению с присваиванием null.

Кинга Идем в IT: пошаговый план для смены профессии

Преимущества использования: эффективность памяти и производительности

С учётом подхода к долгосрочной разработке, мы можем применить принцип переиспользования к нашему небольшому строковому массиву:

Java
Скопировать код
public class ArrayUtils {
    public static final String[] EMPTY_STRING_ARRAY = new String[0];
    // Встречайте наш пустой массив.
}

Когда вам понадобится пустой массив, достаточно обратиться к ArrayUtils.EMPTY_STRING_ARRAY. Это похоже на использование многоразовых пакетов в повседневной жизни: один и тот же static final массив готов к использованию в разных участках кода, что способствует экономии памяти.

Другие способы создания пустого массива

С использованием ключевого слова 'new'

Вы можете создать пустой массив, указав его размер:

Java
Скопировать код
String[] explicitlyEmpty = new String[0];

"Доступно в 0D (нулевой) размерности."

В использывании библиотеки Apache Commons Lang

Мастера открытого исходного кода от Apache предоставили нам ArrayUtils.EMPTY_STRING_ARRAY:

Java
Скопировать код
String[] emptyArray = ArrayUtils.EMPTY_STRING_ARRAY;

"В мире кода Apache заложил порядок."

Методы возвращают пустые массивы, а не ошибки

Если ваш метод безупречно отработал все задачи, но не найдено ничего для возврата, он может вернуть пустой массив вместо null:

Java
Скопировать код
public String[] searchForValues() {
    // Производим поиск...
    if (noResultsFound) {
        return ArrayUtils.EMPTY_STRING_ARRAY;
    }
    // Возвращаем найденные значения здесь
}

Ваш метод продолжит функционировать, даже когда «пакеты» у него закончатся.

Визуализация

Вообразите пустой дом (🏠), без обитателей:

Вместо строительного разрешения: String[] noResidents = new String[0];

Или пустой почтовый ящик 📭:

Java
Скопировать код
String[] emptyMailbox = new String[0]; // Образец пустоты

Что мы увидим, открыв виртуальный почтовый ящик:

Markdown
Скопировать код
📭➡️ [ ] // "Эхо... эхо... эхо..."

Изменчивость размера массива

Определение размера массива

В отличие от мобильных устройств, в Java, установив размер массива, вы не сможете его изменить.

Гибкость при использовании ArrayList<>

Для тех, кто ценит гибкость, ArrayList<String> – это изменяемый список, который может быть расширен или сокращен по мере необходимости:

Java
Скопировать код
List<String> flexibleList = new ArrayList<>(); // Еще более эластичный только учитель йоги.

Перевод обратно в массив возможен в любой момент:

Java
Скопировать код
String[] array = flexibleList.toArray(new String[0]);

Ошибки при отсутствии инициализации

Будьте осторожны, если видите следующее:

Java
Скопировать код
String[] notInitialized;

notInitialized – это минное поле. Он будет вызывать ошибку NullPointerException, пока не получит значение.

Согласованность в Java: уверенность в предсказуемости

Согласованность – основа программирования. Инициализация массивов различных типов осуществляется одним и тем же способом:

Java
Скопировать код
int[] emptyInts = new int[0]; // Здесь пусто.

Полезные материалы

  1. String (Java Platform SE 8) — Официальная документация класса String в Java.
  2. Arrays (The Java™ Tutorials) — Инструктажный учебник Oracle по работе с массивами.
  3. How do I declare and initialize an array in Java? — Обсуждение на Stack Overflow о декларации и инициализации массивов.
  4. Arrays — Обучающий ресурс от Принстонского университета по Java массивам и основным понятиям программирования, связанным с ними.
  5. Java Practices->Initializing fields to 0 false null is redundant — Лучшие практики по инициализации переменных в Java.
  6. java – Group a list of objects by an attribute — Не прямо связанно, но полезно для понимания работы с массивами.