articles
15 уровень

Java массивы

Пост из группы Архив info.javarush.ru
2660 участников

Массивы

Массив — это структура данных, в которой хранятся величины одинакового типа. Доступ к отдельному элементу массива осуществляется с помощью целого индекса. Например, если а — массив целых чисел, то значение выражения а [ i ] равно i-му целому числу в массиве. Массив объявляется следующим образом: сначала указывается тип массива, т.е тип элементов, содержащихся в массиве, за которым ставится пара пустых квадратных скобок, а затем — имя переменной. Например, вот как объявляется массив, состоящий из целых чисел: int[] a; Однако этот оператор лишь объявляет переменную а, не инициализируя ее настоящим массивом. Чтобы создать массив, нужно применить оператор new. int[ ] a = new int [100] ; Этот оператор создает массив, состоящий из 100 целых чисел. Элементы этого массива нумеруются от 0 до 99 (а не от 1 до 100). После создания массив можно заполнять, например, с помощью цикла. int [ ] а = new int[100]; for (int i = 0; i < 100; i++) a[i] = i; // Заполняет массив числами от 0 до 99. Если вы попытаетесь обратиться к элементу а [100] (или любому другому элементу, индекс которого выходит за пределы диапазона от 0 до 99), создав массив, состоящий из 100 элементов, программа прекратит работу, поскольку возникнет исключительная ситуация, связанная с выходом индекса массива за пределы допустимого диапазона. Чтобы подсчитать количество элементов в массиве, используйте метод имя Массива.length. Например, for (int i = 0; i < a. length; i++ System.out.println (a[i]); После создания массива изменить его размер невозможно (хотя можно, конечно, изменять отдельные его элементы). Если в ходе выполнения программы необходимо часто изменять размер массива, лучше использовать другую структуру данных, называемую списком массивов (array list). Массив можно объявить двумя способами: int[ ] a; или int a[ ]; Большинство программистов на языке Java предпочитают первый стиль, поскольку в нем четче отделяется тип массива int [ ] (целочисленный массив) от имени переменной.

Инициализаторы массивов и безымянные массивы

В языке Java есть средство для одновременного создания массива и его инициализации. Вот пример такой синтаксической конструкции: int[] smallPrimes = { 2, 3, 5, 7, 11, 13}; Отметим, что в этом случае не нужно применять оператор new. Кроме того, можно даже инициализировать безымянный массив: new int [ ] { 16, 19, 23 , 29 , 31, 37} Это выражение выделяет память для нового массива и заполняет его числами, указанными в фигурных скобках. При этом подсчитывается их количество и, соответственно, определяется размер массива. Эту синтаксическую конструкцию удобно применять для повторной инициализации массива без образования новой переменной. Например, выражение smallPrimes = new int{ 17, 19, 23, 29, 31, 37 }; представляет собой укороченную запись выражения int[] anonymous = { 17, 19, 23, 29, 31, 37 }; smailPrimes = anonymous; Можно создать массив нулевого размера. Такой массив может оказаться полезным при написании метода, вычисляющего некий массив, который оказывается пустым. Массив нулевой длины объявляется следующим образом: new тип Элементов[] Заметим, что такой массив не эквивалентен объекту null.

Копирование массивов

Один массив можно скопировать в другой, но при этом обе переменные будут ссылаться на один и тот же массив. int[] luckyNumbers = smailPrimes; luckyNuimbers[5] = 12; // Теперь элемент smailPrimes[5]также равен 12. Результат показан на рис. 3.1. Если необходимо скопировать все элементы одного массива в другой, следует использовать метод arraycopy из класса System. Его вызов выглядит следующим образом: System.arraycopy(from, fromlndex, to, tolndex, count); Массив to должен иметь достаточный размер, чтобы в нем поместились все копируемые элементы. Рис.3.1. Копирование массива Например, показанные ниже операторы, результаты работы которых изображены на рис. 3.2, создают два массива, а затем копируют последние четыре элемента первого массива во второй. Копирование начинается со второй позиции в исходном массиве, а копируемые элементы помещаются в целевой массив, начиная с третьей позиции. int[] smailPrimes = {2, 3, 5, 7, 11, 13}; int[] luckyNumbers = {1001, 1002, 1003, 1004, 1005, 1006, 1007}; System.аггаусору(smailPrimes, 2, luckyNumbers, 3, 4); for (int i = 0; i < luckyNumbers.length; i++) System.println(i +.": " + luckyNumbersfi]); Выполнение этих операторов приводит к следующему результату. 0: 1001 1: 1002 2: 1003 3: 5 4: 7 5: 11 6: 13 Рис. 3.2. Копирование элементов массива Массив в языке Java значительно отличается от массива в языке C++. Однако он практически совпадает с указателем на динамический массив. Это значит, что оператор int[] a = new int[100]; //Java эквивалентен оператору i n t * = new i n t [ 1 0 0 ] ; // C++, а не int a[100]; // C++ В языке Java оператор [ ] no умолчанию проверяет диапазон изменения индексов. Кроме того, в языке Java нет арифметики указателей — нельзя увеличить указатель а, чтобы обратиться к следующему элементу массива. Ссылка на первоисточник: http://www.java-study.ru/java-uchebnik/88-java-massivy