Что такое array в java
Перейти к содержимому

Что такое array в java

  • автор:

Что такое array в java

Массив представляет набор однотипных значений. Объявление массива похоже на объявление обычной переменной, которая хранит одиночное значение, причем есть два способа объявления массива:

тип_данных название_массива[]; // либо тип_данных[] название_массива;

Например, определим массив чисел:

int nums[]; int[] nums2;

После объявления массива мы можем инициализовать его:

int nums[]; nums = new int[4]; // массив из 4 чисел

Создание массива производится с помощью следующей конструкции: new тип_данных[количество_элементов] , где new — ключевое слово, выделяющее память для указанного в скобках количества элементов. Например, nums = new int[4]; — в этом выражении создается массив из четырех элементов int, и каждый элемент будет иметь значение по умолчанию — число 0.

Также можно сразу при объявлении массива инициализировать его:

int nums[] = new int[4]; // массив из 4 чисел int[] nums2 = new int[5]; // массив из 5 чисел

При подобной инициализации все элементы массива имеют значение по умолчанию. Для числовых типов (в том числе для типа char) это число 0, для типа boolean это значение false , а для остальных объектов это значение null . Например, для типа int значением по умолчанию является число 0, поэтому выше определенный массив nums будет состоять из четырех нулей.

Однако также можно задать конкретные значения для элементов массива при его создании:

// эти два способа равноценны int[] nums = new int[] < 1, 2, 3, 5 >; int[] nums2 = < 1, 2, 3, 5 >;

Стоит отметить, что в этом случае в квадратных скобках не указывается размер массива, так как он вычисляется по количеству элементов в фигурных скобках.

После создания массива мы можем обратиться к любому его элементу по индексу, который передается в квадратных скобках после названия переменной массива:

int[] nums = new int[4]; // устанавливаем значения элементов массива nums[0] = 1; nums[1] = 2; nums[2] = 4; nums[3] = 100; // получаем значение третьего элемента массива System.out.println(nums[2]); // 4

Индексация элементов массива начинается с 0, поэтому в данном случае, чтобы обратиться к четвертому элементу в массиве, нам надо использовать выражение nums[3] .

И так как у нас массив определен только для 4 элементов, то мы не можем обратиться, например, к шестому элементу: nums[5] = 5; . Если мы так попытаемся сделать, то мы получим ошибку.

Длина массива

Важнейшее свойство, которым обладают массивы, является свойство length , возвращающее длину массива, то есть количество его элементов:

int[] nums = ; int length = nums.length; // 5

Нередко бывает неизвестным последний индекс, и чтобы получить последний элемент массива, мы можем использовать это свойство:

int last = nums[nums.length-1];

Многомерные массивы

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

int[] nums1 = new int[] < 0, 1, 2, 3, 4, 5 >; int[][] nums2 = < < 0, 1, 2 >, < 3, 4, 5 >>;

Визуально оба массива можно представить следующим образом:

Синтаксис — Java: Массивы

Массивы представляют собой последовательность элементов одного типа, например чисел или строк. Задача массива — представить такие списки в виде единой структуры, которая позволяет работать с ними как с единым целым, будь то курсы на Хекслете или друзья в вашей любимой социальной сети.

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

Начнем с создания. Для создания массива надо знать тип элементов в массиве и имя новой переменной которая будет ссылаться на массив:

// Массив - ссылочный тип int[] numbers = 1, 2, 3>; String[] cars = "kia", "bmw", "ford">; // Массив может быть даже пустым int[] fruits = <>; 

В примере создаются и сразу инициализируются (наполняются значениями) два массива. Один состоит из чисел, другой из строк. Тип массива задается как тип хранящихся элементов, соединенный с парными скобками, например, так int[] .

Обратите внимание на именование переменных, содержащих массивы. Они во множественном числе. Это подчеркивает природу переменной и делает код проще для анализа.

Массивы в Java фиксированного размера, поэтому если мы хотим создать пустой массив, но не знаем заранее что должно быть внутри, мы можем создать пустой массив нужной длины и затем заполнить его нужными значениями:

// Это особый синтаксис создания массива, а не объектов по типу // Обратите внимание на то, что скобки квадратные, а не круглые int[] numbers = new int[3]; String[] cars = new String[3]; // И так далее для всех остальных типов 

Здесь 3 — нужный размер массива, в переменной numbers будет зарезервировано место для трех переменных которые можно будет записать в массив в дальнейшем.

Вывод на экран

Массивы относятся к ссылочным типам данных. Эту тему мы обсудим позже, но прямо сейчас нужно знать как распечатать на экран такие данные. Обычный способ не работает:

String[] cars = "kia", "bmw", "ford">; System.out.println(cars); // => java.lang.String;@27bc2616 

Для печати нужно использовать метод Arrays.toString() , который формирует из массива строку. Затем эту строку можно вывести на экран:

import java.util.Arrays; String[] cars = "kia", "bmw", "ford">; System.out.println(Arrays.toString(cars)); // => ["kia", "bmw", "ford"] 

Получение данных

Элементы в массиве упорядочены слева направо. Каждый элемент имеет порядковый номер, называемый индексом. Индексация массива начинается с нуля. То есть первый элемент массива доступен по индексу 0 , второй — по индексу 1 и так далее. Для извлечения элемента из массива по индексу используется свой синтаксис:

String[] animals = "cats", "dogs", "birds">; animals[0]; // "cats" animals[1]; // "dogs" // Последний индекс в массиве всегда меньше размера массива на единицу // В этом массиве три элемента, но последний индекс равен двум animals[2]; // "birds" 

Узнать размер массива можно, обратившись к его свойству length .

String[] animals = "cats", "dogs", "birds">; animals.length; // 3 

В реальных задачах индекс часто вычисляется динамически, поэтому обращение к конкретному элементу происходит с использованием переменных:

var i = 1; String[] animals = "cats", "dogs", "birds">; animals[i]; // "dogs" 
var i = 1; var j = 1; String[] animals = "cats", "dogs", "birds">; animals[i + j]; // "birds" 

Такой вызов возможен по одной простой причине — внутри скобок ожидается выражение. А там, где ожидается выражение, можно подставлять все, что вычисляется. В том числе вызовы метода:

String[] animals = "cats", "dogs", "birds">; animals[someMethod()]; // "dogs" 

Довольно часто в задачах с использованием массивов нужно взять последний элемент. Для этого вычисляется последний индекс массива по формуле размер_массива — 1, по которому и можно обратиться к последнему элементу:

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов

Наши выпускники работают в компаниях:

Массивы в Java

В статье «Переменные в Java.Создание переменной» мы говорили о том, что переменная — это некоторый контейнер , в котором может храниться значение для дальнейшего использования в программе.

array-concept_vertex-academy
  • обычная переменная может содержать только 1 значение .
  • массив — это простая переменная, которая может содержать неодно, а сразу несколько значений, в отличие от обычной переменной, содержащей единственное значение. Массив — это такой себе «магический» контейнер, в который мы можем положить сразу несколько значений («коробочек»).

Ниже приводим Вам примеры массивов.

Пример №1

massiv_vertex-academy

Как видите, мы создали целочисленный массив, который назвали array1 и присвоили три числа: 5, 17, 350

Пример №2

massiv_string_vertex-academy

Как видите, мы создали строковый массив, который назвали array2 и присвоили слово «Java » и фразу «is the best». Причем мы их написали в двойных кавычках, потому что это массив типа String.

Любой массив имеет длину

Например, длина этого массива = 3. Потому что в массиве 3 числа: 5, 17, 350

massiv_vertex-academy

А длина этого массива = 2. Потому что в массиве 2 значения: «Java » и «is the best»

massiv_string_vertex-academy

Если сказать проще, то длина массива — это количество элементов, которые в нем хранятся (количество маленьких «коробочек» в большой).

Предлагаем теперь Вам ответить какая длина у этих 3 массивов?

massivy_test_vertex-academy

Правильные ответы:

massiv3_vertex-academy

Длина этого массива 6. Потому что в этом массиве 6 чисел: 1, 8, 15, 30, 2, 3

massiv4_vertex-academy

Длина этого массива 2. Потому что в массиве 2 числа: 1 и 3

massiv5_vertex-academy

Длина этого массива 4. Потому что в массиве 4 слова: «Киев», «Львов», «Луцк», «Одесса».

А как сделать так, чтоб автоматически получать длину массива?

Подсчитывать вручную количество элементов в массиве — это хорошо, но что, если элементов очень много. Вряд ли у Вас хватит терпения подсчитать 3 000 элементов. Если использовать свойство массива length , длина массива будет подсчитана автоматически.

Например, у нас есть вот такой массив.

massiv_vertex-academy

Пишем int k = array1.length; .

В результате создастся переменная k, в которой будет лежать значение 3.

Попробуйте запустить вот этот код, чтоб убедиться в этом на практике:

class Test < public static void main ( String [ ] args ) < int [ ] array1 = < 5 , 17 , 350 >;
int k = array1 . length ;
System . out . println ( k ) ;

В любом массиве значения элементов сохраняются под порядковыми номерами (индексами)

Причем нумерация начинается с «нуля» . Предлагаем рассмотреть на примерах.

Пример №1

В данном массиве:

5 — это элемент с порядковым номером 0

17 — это элемент с порядковым номером 1

350 — это элемент с порядковым номером 2

massivy_indeksy_vertex-academy

Пример №2

В данном массиве:

«Java » — это элемент с порядковым номером 0

«is the best» — это элемент с порядковым номером 1

massivy_2_indeksy_vertex-academy

Если Вы очень любите сладости, то можете представить массив в виде макаронов.

То есть индекс элемента — это его номер по порядку «минус» 1.

Как видно, длина массива из макаронов =3. И применяется та же логика к порядковым номерам (индексам) в массиве.

Давайте разберемся зачем в массиве значения элементов сохраняются под порядковыми номерами (индексами)?

А ответ очень и очень простой. Чтобы можно было обращаться к конкретным элементам массива по индексу. Поскольку из того, что мы в большую коробку хаотично накидаем другие коробки, толку мало. Нам нужно знать, где лежит маленькая коробка с тем, что нам нужно. По этому все, что мы кладем в большую коробку, имеет свой номер.

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

Давайте рассмотрим это на практике.

  1. Как мы можем обратиться к элементу массива array1 под индексом 0? Ответ: array1[0]
  2. Как мы можем обратиться к элементу массива array1 под индексом 1? Ответ: array1[1]
  3. Как мы можем обратиться к элементу массива array1 под индексом 2? Ответ: array1[2]

massivy_indeksy_vertex-academy

А как создать пустой массив?

array1_vertex-academy

Во всех предыдущих примерах мы создавали массив и сразу инициализировали его какими-то значениями. Однако есть возможность сначала создать массив нужного размера, а позже наполнять его значениями (если нам при создании не известно, какие значения там будут находиться). Например, врач говорит женщине, что у нее будет двойня, но какого пола будут дети пока не известно. Вот Вам массив на 2 элемента типа «ребенок», но значения пока не известны.

Чтобы создать такой массив, нужно воспользоваться ключевым словом new. Теперь создание массива будет выглядеть так:

тип [] название = new тип[размер];

Запомните, что тип до «равно» и после, если мы говорим о массиве из примитивных типов, должны быть одинаковыми!

В будущем мы увидим, что это правило может нарушаться, но это уже другая история.

В программе это выглядело бы вот так:

Что такое array в java

Я правильно понимаю — что если я массиву Б присвою массив А (В=А). То присвою просто ссылку на А. Ссылку на В потеряю и начальное содержимое В — будет очищено потом при очистке мусора? int[] A = new int[3] <1,2,3>; int[] B = new int[3] ; B=A; // содержимое В потеряно A[1]=5; // в A[1] и B[1] теперь значение 5 A=null; //теперь ссылка на массив А только в Б?

Anatoly Уровень 22
22 апреля 2023
Теперь все встало на свои места
Vladimir Уровень 13
12 апреля 2023

Хороший материал, спасибо автору! Единственный момент, на мой взгляд, лучше отобразить импорт класса Arrays, чтобы было понятно откуда методы по классу Arrays берутся.

Ислам Уровень 32
12 апреля 2023
отличная лекция, которая дает больше понимания о массивах в Java
Кирилл Загурный Уровень 21 Expert
12 апреля 2023
Отличный материал на закрепление темы массивов. Спасибо!
13 марта 2023
Автору спасибо, полезный и понятный материал!
15 февраля 2023

У меня вопрос: создал массив и заполнил случайными числами. Не могу теперь понять как найти повторяющиеся числа в массиве

11 февраля 2023
Хорошая статья
Сообщество

JavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.

Подписывайтесь
Язык интерфейса
«Программистами не рождаются» © 2023 JavaRush
Скачивайте наши приложения
«Программистами не рождаются» © 2023 JavaRush

Этот веб-сайт использует данные cookie, чтобы настроить персонально под вас работу сервиса. Используя веб-сайт, вы даете согласие на применение данных cookie. Больше подробностей — в нашем Пользовательском соглашении.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *