Понятие массива. Одномерные массивы
Содержание
- 1. Что такое массив? Какое предназначение массивов в программе.
- 2. Какие типы данных могут принимать элементы массива?
- 3. Как выглядит общая форма описания одномерного массива?
- 4. Пример создания и использования одномерного массива с именем d, в котором есть 5 элементов типа int.
- 5. Пример создания и использования одномерного массива f, содержащего 10 элементов типа float.
- 6. Пример создания и использования одномерного массива x, в котором 20 элементов имеют тип double.
- 7. Пример фрагмента кода обнуления одномерного массива с именем x, содержащего 20 чисел типа double.
- 8. Пример вычисления суммы элементов одномерного массива M, в котором есть 50 вещественных чисел.
- 9. Пример поиска максимального значения в массиве из 100 целых чисел.
- 10. Пример сортировки одномерного массива вещественных чисел методом вставки.
- 11. Как в Java осуществить присвоение одного массива другому? Метод clone().
- 12. Как осуществляется начальная инициализация одномерного массива?
- 13. Пример описания одномерного массива классов.
- 14. Пример описания одномерного массива интерфейсов.
- 15. Пример описания и использования одномерного массива строк.
- Связанные темы
Поиск на других ресурсах:
1. Что такое массив? Какое предназначение массивов в программе
Массив – это набор (группа) однотипных элементов, объединенных одним именем. Массивы позволяют удобно группировать информацию и получать доступ к ней.
Массивы могут быть одномерными, двумерными и многомерными.
Позиция элемента в массиве называется индексом. В языке Java позиция первого элемента в массиве начинается с нуля.
Массив считается одномерным, если для определения местоположения элемента в массиве нужно указать значение одного индекса.
Массив считается двумерным, если для определения местоположения элемента в массиве нужно указать значения двух индексов.
⇑
2. Какие типы данных могут принимать элементы массива?
Элементы массива могут быть любого типа, допустимого в языке Java.
Этот тип определяет тип данных любого из элементов, которые составляют данный массив.
Подробное описание примитивных типов данных можно найти здесь.
⇑
3. Как выглядит общая форма описания одномерного массива?
Общая форма описания одномерного массива:
тип имя_переменной[];
или
тип[] имя_переменной;
где
- тип — означает тип элемента массива, который называется также базовым типом;
- имя_переменной — название массива, по которому будет осуществляться доступ к элементам массива.
После этого нужно выделить память под массив. Общая форма выделения памяти имеет вид:
имя_переменной = new тип[размер];
где
- тип – базовый тип элементов массива;
- размер – число элементов массива.
Выделение памяти для элементов массива можно осуществлять сразу после его описания. В этом случае общая форма описания массива имеет вид:
тип имя_переменной[] = new тип[размер];
или
тип[] имя_переменной = new тип[размер];
При выделении памяти элементы массива заполняются:
- нулевыми значениями для числовых типов;
- значениями false для логического типа boolean;
- пустыми значениями null для ссылочных типов.
Итак, процесс создания массива проходит в два этапа:
- объявляется переменная нужного типа массива;
- с помощью оператора new выделяется память для элементов массива.
⇑
4. Пример создания и использования одномерного массива с именем d, в котором есть 5 элементов типа int.
// описание массива с именем d в котором элементы имеют тип int int d[]; d = new int[5]; // выделение памяти для 5 элементов типа int массива d // доступ к элементам массива d d[2] = -8; // в 3-й элемент массива записать число -8 d[0] = -1000; // в 1-й элемент массива записать число -1000 d[4] = 29; d[5] = 300; // ошибка - ArrayIndexOutOfBoundsException: 5
В данном примере создание массива можно осуществлять разными способами.
Способ 1.
int d[]; d = new int[5];
Способ 2.
int[] d; d = new int[5];
Способ 3.
int[] d = new int[5];
Способ 4.
int d[] = new int[5];
⇑
5. Пример создания и использования одномерного массива f, содержащего 10 элементов типа float.
float[] f; // массив с именем f, элементы массива имеют тип float f = new float[10]; // выделение памяти для 10 элементов массива f f[0] = 0.0f; f[1] = 1.0f; f[2] = 2.0f; f[3] = 3f; f[4] = 4.0f; f[5] = 5.0f;
⇑
6. Пример создания и использования одномерного массива x, в котором 20 элементов имеют тип double.
// описание массива x из 20 элементов типа double double x[] = new double[20]; x[8] = -3.3998; x[3] = -5.5; // x[3] = -5.5 x[3] = x[7]; // x[3] = 0.0
⇑
7. Пример фрагмента кода обнуления одномерного массива с именем x, содержащего 20 чисел типа double.
В данном примере обнуляется массив вещественных чисел типа double.
double x[] = new double[20]; // описание массива x из 20 элементов типа double for (int i=0; i<x.length; i++) x[i] = 0.0;
⇑
8. Пример вычисления суммы элементов одномерного массива M, в котором есть 50 вещественных чисел.
// вычисление суммы элементов массива float[] M = new float[50]; float sum = 0; // искомая сумма // заполнение массива данными // ... // цикл вычисления суммы for (int i=0; i<M.length; i++) sum = sum + M[i];
⇑
9. Пример поиска максимального значения в массиве из 100 целых чисел.
// поиск максимального значения int[] A = new int[100]; // объявление массива int max; // искомое значение // заполнение массива данными // ... // цикл поиска максимального значения max = A[0]; for (int i=1; i<A.length; i++) if (max < A[i]) max = A[i];
⇑
10. Пример сортировки одномерного массива вещественных чисел методом вставки.
float M[] = new float[5]; // объявление массива из 5 элементов float x; // вспомогательная переменная // ввод массива M, заполнение значениями // ... // цикл сортировки методом вставки for (int i=0; i<M.length-1; i++) for (int j=i; j>=0; j--) if (M[j]>M[j+1]) { x = M[j]; M[j] = M[j+1]; M[j+1] = x; }
⇑
11. Как в Java осуществить присвоение одного массива другому? Метод clone().
Для глубокого копирования массивов используется метод clone() из библиотеки Java.
Пример присвоения одного массива другому с использованием метода clone().
float[] f; // массив с именем f, элементы массива имеют тип float float f2[]; f = new float[5]; // выделение памяти для 5 элементов массива f f2 = new float[5]; // выделение памяти для массива f2 f[0] = 0.0f; f[1] = 1.0f; f[2] = 2.0f; f[3] = 3f; f[4] = 4.0f; // метод clone() - глубокое копирование f2 = f.clone(); // массивы f и f2 - разные массивы f[2]=3.8f; // f2[2] = 3.8; f[2] = 2.0
Если написать:
f2 = f;
то обе переменные f и f2 будут указывать на один участок памяти.
⇑
12. Как осуществляется начальная инициализация одномерного массива?
В программах на Java массивы можно инициализировать во время их объявления. В этом случае указывается список выражений, которые разделяются символом запятая ‘,‘. Этот список выражений берется в фигурные скобки.
Примеры инициализации массивов разных размерностей и разных типов их элементов.
// инициализация одномерного массива из 5 чисел типа double double M[] = { 3.8, -2.55, 0.23, -11.45, 3.85 }; // инициализация одномерного массива из 5 чисел типа byte byte[] B = { -1, 25, 44, -12, 14 }; // инициализация массива из 10 элементов типа char char C[] = { 'a', 'b', 'c', 'd', '5', ';', '9', 'N', '!', '
⇑
13. Пример описания одномерного массива классов.
Пусть задан класс с именем MyPoint. Нужно описать объект-переменную, который является массивом из 3 классов MyPoint.
// объявление класса MyPoint class MyPoint { int x; // внутренняя переменная x int y; // внутренняя переменная y // реализация методов класса public void SetXY(int xx, int yy) { x = xx; y = yy; } public int GetX() { return x; } public int GetY() { return y; } } ... // использование массива классов в программе // объявление переменной типа массив классов MyPoint MyPoint[] mp; // выделение памяти для массива классов mp = new MyPoint[10]; // выделение памяти для каждого класса for (int i=0; i<mp.length; i++) mp[i] = new MyPoint(); mp[0].SetXY(10, 20); mp[1].SetXY(30, -100); mp[2].SetXY(4, -345); int d; d = mp[2].GetY(); // d = -345 d = mp[0].GetX(); // d = 10 d = mp[1].GetY(); // d = -100
⇑
14. Пример описания одномерного массива интерфейсов.
Пусть задан класс с именем MyPoint. Класс реализует интерфейс MyInterface. Нужно описать объект-переменную, которая есть массивом из 5 элементов типа интерфейс MyInterface.
// объявление интерфейса MyInterface interface MyInterface { void SetXY(int xx, int yy); } // объявление класса MyPoint class MyPoint implements MyInterface { int x; // внутренняя переменная x int y; // внутренняя переменная y // реализация метода интерфейса public void SetXY(int xx, int yy) { x = xx; y = yy; } // методы класса public int GetX() { return x; } public int GetY() { return y; } } ... // объявление переменной типа массив классов MyPoint MyPoint[] mp; // выделение памяти для массива классов mp = new MyPoint[3]; // выделение памяти для каждого класса for (int i=0; i<mp.length; i++) mp[i] = new MyPoint(); mp[2].SetXY(4, -345); // заполнить значениями члены класса int d = mp[2].GetY(); // d = -345 // описание переменной mi типа массив интерфейсов MyInterface MyInterface[] mi; // выделение памяти под массив ссылок на интерфейсы mi = new MyInterface[5]; // выделение памяти под каждую переменную-интерфейс for (int i=0; i<mi.length; i++) mi[i] = new MyPoint(); // использование переменной mi mi[0] = mp[2]; // mi[0] ссылается на mp[2] mi[0].SetXY(23, 35); // изменить mi[0] - означает изменить mp[2] d = mp[2].GetY(); // d = 35
⇑
15. Пример описания и использования одномерного массива строк
В языке Java для работы со строками введен особый класс String. В данном примере продемонстрированы операции:
- объявление массива строк и его инициализация;
- копирование массива строк в другой массив;
- использование метода clone() для копирования массивов строк.
// объявление и инициализация массива строк String[] M1 = { "Text #1", "Text #2", "Text #3" }; // объявление массива M2 String[] M2; M2 = new String[3]; // присвоить один массив другому for (int i=0; i<3; i++) M2[i] = M1[i]; // присвоение массивов с использованием метода clone() String[] M3; M3 = M1.clone();