Массивы ·
‹ Предыдущий Следующий ›
⏱ 5 минут чтения Обновлено: 2026-07-13

Метод Arrays.toString() в Java

Метод Arrays.toString() возвращает строковое представление одномерного массива в Java: элементы перечисляются через запятую с пробелом и заключаются в квадратные скобки. Это самый короткий способ вывести массив на консоль — вместо перебора элементов циклом for достаточно одного вызова. Метод статический, находится в классе java.util.Arrays, поэтому в начале файла нужен импорт import java.util.Arrays;.

Как работает Arrays.toString()

Передаём одномерный массив в метод — получаем готовую строку:

import java.util.Arrays;

public class ArraysToStringExample {
    public static void main(String[] args) {
        int[] array = {1, 4, 6, 3, 8};
        System.out.println(Arrays.toString(array));
    }
}

Вывод на консоль:

[1, 4, 6, 3, 8]

Метод работает с массивами любого типа. Для массива строк String[] каждый элемент попадает в результат как есть, без кавычек:

String[] names = {"Anna", "Boris", "Clara"};
System.out.println(Arrays.toString(names)); // [Anna, Boris, Clara]

Полное описание всех перегрузок метода есть в официальной документации Oracle по классу Arrays.

Важно

У Arrays.toString() девять перегрузок: по одной для каждого из восьми примитивных типов (int[], long[], double[], char[] и т.д.) и одна для Object[]. Поэтому метод принимает массив любого типа — отдельно ничего преобразовывать не нужно.

Почему массив печатается как [I@1b6d3586

Если передать массив в System.out.println() напрямую, вместо элементов на консоль попадёт что-то вроде [I@1b6d3586:

int[] array = {1, 4, 6, 3, 8};
System.out.println(array);                  // [I@1b6d3586
System.out.println(Arrays.toString(array)); // [1, 4, 6, 3, 8]

Дело в том, что массив в Java — объект, но метод toString() в нём не переопределён. Срабатывает реализация по умолчанию из класса Object: имя типа ([I — одномерный массив int), символ @ и хеш-код в шестнадцатеричном виде. Никакой информации об элементах в такой строке нет — именно поэтому и нужен Arrays.toString(). С двумерным массивом та же проблема повторяется на каждом уровне вложенности — для таких случаев есть отдельный метод Arrays.deepToString(), подробно разобранный в уроке «Метод Arrays.deepToString()».

Сравнение способов вывода массива

Способ Для каких массивов Результат
System.out.println(array) Любой (кроме char[]) Тип и хеш-код: [I@1b6d3586
Arrays.toString(array) Одномерный любого типа [1, 4, 6, 3, 8]
Arrays.deepToString(array) Многомерный (Object[]) [[1, 2, 3], [4, 5, 6]]
String.join(", ", array) String[] и CharSequence[] Anna, Boris, Clara — без скобок

Как преобразовать массив в строку без скобок

Arrays.toString() всегда добавляет квадратные скобки и запятые. Если нужно преобразовать массив в строку в своём формате — например, для записи в файл или формирования сообщения, — используйте String.join() для массива строк:

String[] names = {"Anna", "Boris", "Clara"};
String result = String.join(", ", names);
System.out.println(result); // Anna, Boris, Clara

Для массива примитивов подойдёт Stream API с Collectors.joining():

int[] array = {1, 4, 6, 3, 8};
String result = Arrays.stream(array)
        .mapToObj(String::valueOf)
        .collect(Collectors.joining(", "));
System.out.println(result); // 1, 4, 6, 3, 8

Разделитель в обоих случаях может быть любым: дефис, перенос строки, точка с запятой.

Смежные темы, которые пригодятся при работе с массивами: длина массива, сортировка через Arrays.sort() и преобразование массива в список и обратно.

Часто задаваемые вопросы

Что вернёт Arrays.toString(), если передать null?

Строку "null" — исключение не выбрасывается. Это удобно при отладке: метод безопасно печатает и неинициализированные ссылки на массив.

Почему System.out.println(charArray) печатает символы, а не хеш-код?

Для char[] у println() есть отдельная перегрузка, которая выводит содержимое массива как текст. Это единственный тип массива с таким поведением — остальные печатаются как тип и хеш-код. Arrays.toString(charArray) при этом выведет символы через запятую: [h, e, l, l, o].

Как вывести массив объектов своего класса?

Arrays.toString() вызывает toString() у каждого элемента. Если в вашем классе метод toString() не переопределён, вместо полей объектов вы увидите список вида ClassName@хеш-код. Переопределите toString() в классе — и вывод станет читаемым.

Можно ли сравнивать массивы через Arrays.toString()?

Технически строки можно сравнить, но это лишняя работа и риск неочевидных ошибок. Для сравнения содержимого массивов предназначены Arrays.equals() (одномерные) и Arrays.deepEquals() (многомерные).

Презентация с видео на Patreon →

Видео объяснение

Предпочитаете видеоформат? Посмотрите этот урок с примерами и объяснениями.

Комментарии

Зарегистрируйтесь или войдите, чтобы иметь возможность оставить комментарий.