W3docs

Как получить длину массива в Java

Получите длину массива Java с помощью поля .length, в том числе для многомерных массивов.

Java-массив постоянно хранит свой размер, и вы читаете его через поле length. Это одна из самых распространённых операций с массивами — для перебора элементов, поиска последнего элемента или проверки того, содержит ли массив данные. В этой главе показано, как работает length, чем оно отличается от String.length(), и как измерять многомерные массивы.

Используйте поле length

Каждый массив в Java предоставляет поле public final int length, которое хранит количество элементов. Читается оно без скобок, поскольку это поле, а не метод.

int[] scores = {88, 92, 75, 60, 100};
int size = scores.length;          // 5
System.out.println(scores.length); // 5

Значение фиксируется при создании массива и никогда не меняется — массивы в Java не растут и не уменьшаются. Если вам нужна изменяемая коллекция, используйте ArrayList, который предоставляет метод size(). Поле length одинаково работает для массивов любого типа: String[], double[] или даже массивов объектов.

Поле против метода: length и length()

Частый источник путаницы — смешение массивов и строк. Массив использует поле length; String использует метод length(). Написав неправильный вариант, вы получите ошибку компиляции.

int[] numbers = {1, 2, 3};
String text = "hello";

System.out.println(numbers.length);   // field, no ()  -> 3
System.out.println(text.length());    // method, with () -> 5
ТипКак получить размерСкобки?
Массив (int[], String[], ...)array.lengthНет
Stringstr.length()Да
ArrayList, HashMap, ...collection.size()Да

Простое правило: массивы — единственные из трёх, где используется обычное поле. Всё остальное использует вызов метода.

Обработка пустых массивов и доступ к последнему элементу

Массив, созданный с размером 0, — это реальный, ненулевой объект, у которого length равно 0. Это отличается от ссылки null, у которой вообще нет длины — обращение к .length у null вызовет NullPointerException. Чтобы безопасно использовать размер, перебирайте элементы от 0 до length - 1, поскольку последний допустимый индекс всегда на единицу меньше длины.

int[] empty = new int[0];
System.out.println(empty.length);          // 0, not an error

int[] data = {10, 20, 30};
int last = data[data.length - 1];          // 30
for (int i = 0; i < data.length; i++) {
    System.out.println(data[i]);
}

Если массив может быть null, сначала проверьте это: if (data != null && data.length > 0).

Измерение многомерных массивов

Двумерный массив в Java — это фактически массив массивов. Внешнее length даёт количество строк, а каждая строка имеет собственное length для числа столбцов в ней. Строки могут даже иметь разную длину (зубчатый массив), поэтому всегда читайте длину каждой строки отдельно, не предполагая одинаковой ширины.

int[][] grid = {
    {1, 2, 3},
    {4, 5},
    {6, 7, 8, 9}
};
System.out.println(grid.length);     // 3 rows
System.out.println(grid[0].length);  // 3 columns in row 0
System.out.println(grid[2].length);  // 4 columns in row 2

Чтобы подсчитать все элементы, суммируйте длину каждой строки вместо умножения строк на столбцы — этот приём работает только для идеально прямоугольных сеток.

Практический пример

Программа ниже объединяет все эти идеи: плоский массив, различие между полем и методом, пустой массив, доступ к последнему элементу и зубчатый двумерный массив, общий размер которого вычисляется суммированием длин строк.

java— editable, runs on the server

Что следует вынести из запуска:

  • scores.length = 5 подтверждает, что length читается как обычное поле без скобок и возвращает количество элементов.
  • word.length() = 5 показывает, что размер String получается через метод length() — механизм, отличный от поля массива.
  • empty.length = 0 доказывает, что массив нулевой длины является допустимым объектом, а не null, и чтение его длины безопасно.
  • last element = 100 демонстрирует, что последний индекс равен length - 1, поскольку индексация начинается с 0.
  • grid.length (rows) = 3, тогда как grid[2].length равно 4, что показывает: внешняя длина считает строки, а каждая строка хранит собственную длину — в сумме total elements in grid = 9.

Практика

Практика
Как правильно получить количество элементов в массиве int с именем 'data' в Java?
Как правильно получить количество элементов в массиве int с именем 'data' в Java?
Was this page helpful?