SlideShare uma empresa Scribd logo
1 de 30
Массивы.
Виталий Унгурян
unguryan@itstep.org
Что такое массивы?
Массив в java это – конечное,
именованное множество
переменных одного типа.
Синтаксис объявления одномерного
массива
тип[] имя или тип имя []
Где тип — это тип элементов массива, а имя
— уникальный идентификатор (согласно
правилам именования переменных).
int cats[]; // мы объявили переменную
массива
int[] cats; //другой вариант объявления
Резервация памяти и инициализация
массивов значениями по умолчанию
int[] cats;
// все элементы массива равны 0
cats = new int[12];
int[] cats = new int[12];
int number = 12;
int[] cats = new int[number];
// все элементы равны null
String cats[] = new String[12];
Явная инициализация массива
int[] cats = new int[] {5, 10, 24, 26};
int[] cats = {5, 1, 3}; // упрощённая форма
записи
String catNames[] = new String[] {" Рыжик" , "
Барсик" , " Том" };
Индексация элементов массива
int[] cats = new int[10]; // массив из шести
элементов с начальным значением 0 для
каждого элемента
Важно!!! Индексация
массивов начинается с
нуля.
Индексация элементов массива
Индексация элементов массива
0000111100010101
0 1 2
Запись значений в массив
Индексация элементов
cats[3] = 5; // четвёртому элементу присвоено
значение 5
cats[5] = 7; // шестому элементу присвоено
значение 7
System.out.println(cats[3]); // отображение
четвертого элемента
cats[6] = 7; При выходе за границы массива
выбрасывается исключение
ArrayIndexOutOfBoundsException
Размер массива
Размер массива может быть запрошен
через его свойство length.
int mas = new int[6];
int size = mas.lenght;
System.out.println(" Размер массива
= " + size);
Схема размещения массивов в
памяти
char mas = new char[1]
Заголовок 8 байт + 4 байта = 12 байт
Примитивы char 2 байта х 1 = 2 байта
Выравнивание для
кратности 8
2 байта
Итого 16 байт
Инициализация массива
с помощью цикла
int [] mas = new int[3];
mas[0] = 0;
mas[1] = 1;
mas[2] = 2;
int [] mas = new int[3];
for (int i = 0; i < mas.lenght ; i++) {
mas[i] = i;
}
Задача «Синоптик»
Температура I II III IV V VI VII VIII IX X XI XII Год
Средняя -1,7 -1,0 2,6 9,0 15,119,421,421,217,111,1 5,9 1,4
Дневная
максимальна
я
1 1 5 12 19 24 26 26 21 15 8 4
Ночная
минимальная -4 -4 0 6 12 16 18 17 13 8 3 -1
Многомерные массивы
Для создания многомерных массивов
используются дополнительные скобки.
int [][] a = { { 1, 2, 3 }, { 4, 5, 6 } }
// трёхмерный массив фиксированной
длины int [][][] b = new int [2][4][4];
Масивы массивов
В Java многомерные
массивы представляют
собой массивы массивов.
При объявлении переменной
многомерного массива для указания
каждого дополнительного индекса
используют отдельный набор
квадратных скобок.
Двухмерный массив (частный случай
многомерного)
String[][] arr = new String[4][3];
arr[0][0] = "1";
arr[0][1] = "Васька";
arr[0][2] = "121987102";
Двухмерный массив
Графическое представление
Очень важно понять
Каждый из массивов с элементами int,
располагаются в памяти непрерывным
куском, но где и как расположены
каждый из них это определяет
виртуальная машина java.
Очень важно понять
Исходя из этого есть рекомендация, что
наружные (левые) размерности массива
лучше делать меньше, а самые больше
размерности внутри (правее), поскольку
это, во-первых, уменьшит
фрагментацию памяти, а во вторых
потребует гораздо меньше памяти для
размещения массива.
Правило создания двухмерных
массивов
int[][] a = new int[10][1000];
int[][] b = new int[1000][10];
В случае массива a, количество порождаемых
в памяти объектов равно 11, а в случае
массива b – 1001. Создание и обслуживание
каждого объекта в памяти виртуальной
машины имеет свои накладные расходы, так
как виртуальная машина считает ссылки для
каждого объекта, хранит его атрибуты и т.д. и
т.п.
Примеры использования
- Таблицы
- Матрицы
- Структурированные данные
Отложенная инициализация
int [][] twoD = new int[3][];
// память под первое измерение // далее
резервируем память под второе
измерение
twoD[0] = new int[4];
twoD[1] = new int[4];
twoD[2] = new int[4];
Преобразования массива в строку
int [] mas = new int[]{1,2,3};
Arrays.toString(mas)
Преобразует элементы массива в
строчное представление, в квадратных
скобках, элементы разделены
запятыми.
Методы класса Arrays
String [][] objects = new String[3][3];
Arrays.deepToString(objects);
Формирует строку из массивов, которые
в качестве элементов содержат
объекты. Очень удобен для вывода
содержания двухмерных массивов.
Методы класса Arrays
Метод fill() просто дублирует одно
заданное значение в каждом элементе
массива (в случае объектов копирует
одну ссылку в каждый элемент).
int size = 4;
boolean[] test1 = new boolean[size];
Arrays.fill(test1, true);
Методы класса Arrays
int [] mas = new int[] {3, 1, 4, 6, 2};
Arrays.sort(mas);
Сортирует значения массива в
естественном порядке (от меньшего к
большему).
Методы класса Arrays
Метод equals(массив, массив)
применяется для проверки на
равенство целых массивов. Чтобы два
массива считались равными, они
должны содержать одинаковое
количество элементов, и каждый
элемент должен быть эквивалентен
соответствующему элементу другого
массива.
boolean test = Arrays.equals(m1,m2);
System.arraycopy()
Копирование данных из одного
массива в другой.
System.arraycopy(src, srcPos, dest,
destPos, length)
Данный метод, после всех проверок, копирует
length элементов массива src, начиная с
позиции srcPos, в массив dest, начиная с
позиции destPos. Его удобно использовать,
когда нужно скопировать лишь часть массива.

Mais conteúdo relacionado

Mais procurados

Java. Введение в коллекции. Классы обертки. Перечисленияю
Java. Введение в коллекции. Классы обертки.  ПеречисленияюJava. Введение в коллекции. Классы обертки.  Перечисленияю
Java. Введение в коллекции. Классы обертки. ПеречисленияюUnguryan Vitaliy
 
Основы языка Питон: типы данных, операторы
Основы языка Питон: типы данных, операторыОсновы языка Питон: типы данных, операторы
Основы языка Питон: типы данных, операторыTheoretical mechanics department
 
Java. Интерфейс Map - ассоциативные массивы.
Java. Интерфейс Map - ассоциативные массивы.Java. Интерфейс Map - ассоциативные массивы.
Java. Интерфейс Map - ассоциативные массивы.Unguryan Vitaliy
 
Ruby: работа с массивами
Ruby: работа с массивамиRuby: работа с массивами
Ruby: работа с массивамиEvgeny Smirnov
 
Java осень 2013 лекция 2
Java осень 2013 лекция 2Java осень 2013 лекция 2
Java осень 2013 лекция 2Technopark
 
9. java lecture library
9. java lecture library9. java lecture library
9. java lecture libraryMERA_school
 
Discovering Lambdas in Java 8
Discovering Lambdas in Java 8Discovering Lambdas in Java 8
Discovering Lambdas in Java 8Stfalcon Meetups
 
Java. Cистемы счислния, битовые операции
Java. Cистемы счислния, битовые операцииJava. Cистемы счислния, битовые операции
Java. Cистемы счислния, битовые операцииUnguryan Vitaliy
 
Python. Объектно-ориентированное программирование
Python. Объектно-ориентированное программирование Python. Объектно-ориентированное программирование
Python. Объектно-ориентированное программирование Theoretical mechanics department
 

Mais procurados (16)

Основы MATLAB. Программирование
Основы MATLAB. ПрограммированиеОсновы MATLAB. Программирование
Основы MATLAB. Программирование
 
Основы Python. Функции
Основы Python. ФункцииОсновы Python. Функции
Основы Python. Функции
 
Java. Введение в коллекции. Классы обертки. Перечисленияю
Java. Введение в коллекции. Классы обертки.  ПеречисленияюJava. Введение в коллекции. Классы обертки.  Перечисленияю
Java. Введение в коллекции. Классы обертки. Перечисленияю
 
Основы языка Питон: типы данных, операторы
Основы языка Питон: типы данных, операторыОсновы языка Питон: типы данных, операторы
Основы языка Питон: типы данных, операторы
 
Java. Интерфейс Map - ассоциативные массивы.
Java. Интерфейс Map - ассоциативные массивы.Java. Интерфейс Map - ассоциативные массивы.
Java. Интерфейс Map - ассоциативные массивы.
 
Основы NumPy
Основы NumPyОсновы NumPy
Основы NumPy
 
Python: Модули и пакеты
Python: Модули и пакетыPython: Модули и пакеты
Python: Модули и пакеты
 
Основы MATLAB. Лекция 1.
Основы MATLAB. Лекция 1.Основы MATLAB. Лекция 1.
Основы MATLAB. Лекция 1.
 
Ruby: работа с массивами
Ruby: работа с массивамиRuby: работа с массивами
Ruby: работа с массивами
 
Stream API
Stream APIStream API
Stream API
 
Java осень 2013 лекция 2
Java осень 2013 лекция 2Java осень 2013 лекция 2
Java осень 2013 лекция 2
 
9. java lecture library
9. java lecture library9. java lecture library
9. java lecture library
 
Основы SciPy
Основы SciPyОсновы SciPy
Основы SciPy
 
Discovering Lambdas in Java 8
Discovering Lambdas in Java 8Discovering Lambdas in Java 8
Discovering Lambdas in Java 8
 
Java. Cистемы счислния, битовые операции
Java. Cистемы счислния, битовые операцииJava. Cистемы счислния, битовые операции
Java. Cистемы счислния, битовые операции
 
Python. Объектно-ориентированное программирование
Python. Объектно-ориентированное программирование Python. Объектно-ориентированное программирование
Python. Объектно-ориентированное программирование
 

Destaque

Java. Инкапсуляция.
Java. Инкапсуляция.Java. Инкапсуляция.
Java. Инкапсуляция.Unguryan Vitaliy
 
Java. Вложенные классы и интерфейсы.
Java. Вложенные классы и интерфейсы.Java. Вложенные классы и интерфейсы.
Java. Вложенные классы и интерфейсы.Unguryan Vitaliy
 
Исключения и ошибки
Исключения и ошибкиИсключения и ошибки
Исключения и ошибкиUnguryan Vitaliy
 
Java. Generic - шаблонные типы.
Java.  Generic - шаблонные типы.Java.  Generic - шаблонные типы.
Java. Generic - шаблонные типы.Unguryan Vitaliy
 
Java. Наследование.
Java. Наследование.Java. Наследование.
Java. Наследование.Unguryan Vitaliy
 
Java. Интерфейс Reference - типы ссылок
Java. Интерфейс Reference -  типы ссылокJava. Интерфейс Reference -  типы ссылок
Java. Интерфейс Reference - типы ссылокUnguryan Vitaliy
 
Java. Полиморфизм.
Java. Полиморфизм.Java. Полиморфизм.
Java. Полиморфизм.Unguryan Vitaliy
 
Java. Конструкторы класса и инициализация
Java. Конструкторы класса и инициализация Java. Конструкторы класса и инициализация
Java. Конструкторы класса и инициализация Unguryan Vitaliy
 
Java. Интерфейс Queue - очередь
Java. Интерфейс Queue - очередьJava. Интерфейс Queue - очередь
Java. Интерфейс Queue - очередьUnguryan Vitaliy
 
Java. Интерфейс Set - наборы (множества) и его реализации.
Java. Интерфейс Set - наборы (множества) и его реализации.Java. Интерфейс Set - наборы (множества) и его реализации.
Java. Интерфейс Set - наборы (множества) и его реализации.Unguryan Vitaliy
 
Java. Сборщик мусора. Работа с памятью.
Java.  Сборщик мусора. Работа с памятью. Java.  Сборщик мусора. Работа с памятью.
Java. Сборщик мусора. Работа с памятью. Unguryan Vitaliy
 
An Introduction to JVM Internals and Garbage Collection in Java
An Introduction to JVM Internals and Garbage Collection in JavaAn Introduction to JVM Internals and Garbage Collection in Java
An Introduction to JVM Internals and Garbage Collection in JavaAbhishek Asthana
 
Java. Логические операторы, операторы ветвления.
Java. Логические операторы, операторы ветвления.Java. Логические операторы, операторы ветвления.
Java. Логические операторы, операторы ветвления.Unguryan Vitaliy
 

Destaque (16)

Java. Инкапсуляция.
Java. Инкапсуляция.Java. Инкапсуляция.
Java. Инкапсуляция.
 
Java. Циклы.
Java. Циклы.Java. Циклы.
Java. Циклы.
 
Java. Вложенные классы и интерфейсы.
Java. Вложенные классы и интерфейсы.Java. Вложенные классы и интерфейсы.
Java. Вложенные классы и интерфейсы.
 
Исключения и ошибки
Исключения и ошибкиИсключения и ошибки
Исключения и ошибки
 
Java. Generic - шаблонные типы.
Java.  Generic - шаблонные типы.Java.  Generic - шаблонные типы.
Java. Generic - шаблонные типы.
 
Java. Наследование.
Java. Наследование.Java. Наследование.
Java. Наследование.
 
Java. Интерфейс Reference - типы ссылок
Java. Интерфейс Reference -  типы ссылокJava. Интерфейс Reference -  типы ссылок
Java. Интерфейс Reference - типы ссылок
 
Java. Полиморфизм.
Java. Полиморфизм.Java. Полиморфизм.
Java. Полиморфизм.
 
List - списки
List - списки List - списки
List - списки
 
Java. Конструкторы класса и инициализация
Java. Конструкторы класса и инициализация Java. Конструкторы класса и инициализация
Java. Конструкторы класса и инициализация
 
Java. Интерфейс Queue - очередь
Java. Интерфейс Queue - очередьJava. Интерфейс Queue - очередь
Java. Интерфейс Queue - очередь
 
Java. Интерфейс Set - наборы (множества) и его реализации.
Java. Интерфейс Set - наборы (множества) и его реализации.Java. Интерфейс Set - наборы (множества) и его реализации.
Java. Интерфейс Set - наборы (множества) и его реализации.
 
Uml
UmlUml
Uml
 
Java. Сборщик мусора. Работа с памятью.
Java.  Сборщик мусора. Работа с памятью. Java.  Сборщик мусора. Работа с памятью.
Java. Сборщик мусора. Работа с памятью.
 
An Introduction to JVM Internals and Garbage Collection in Java
An Introduction to JVM Internals and Garbage Collection in JavaAn Introduction to JVM Internals and Garbage Collection in Java
An Introduction to JVM Internals and Garbage Collection in Java
 
Java. Логические операторы, операторы ветвления.
Java. Логические операторы, операторы ветвления.Java. Логические операторы, операторы ветвления.
Java. Логические операторы, операторы ветвления.
 

Semelhante a Java. Массивы. Многомерные массивы.

Массивы в Java
Массивы в JavaМассивы в Java
Массивы в Javametaform
 
2.7 Многомерные массивы
2.7 Многомерные массивы2.7 Многомерные массивы
2.7 Многомерные массивыDEVTYPE
 
4. Многомерные массивы и массивы массивов в C#
4. Многомерные массивы и массивы массивов в C#4. Многомерные массивы и массивы массивов в C#
4. Многомерные массивы и массивы массивов в C#Olga Maksimenkova
 
Объектно-ориентированное программирование. Лекции 9 и 10
Объектно-ориентированное программирование. Лекции 9 и 10Объектно-ориентированное программирование. Лекции 9 и 10
Объектно-ориентированное программирование. Лекции 9 и 10Dima Dzuba
 
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...Nikolay Grebenshikov
 
3.4 Объекты и классы
3.4 Объекты и классы3.4 Объекты и классы
3.4 Объекты и классыDEVTYPE
 
3.8 Класс массива
3.8 Класс массива3.8 Класс массива
3.8 Класс массиваDEVTYPE
 
C++ осень 2013 лекция 2
C++ осень 2013 лекция 2C++ осень 2013 лекция 2
C++ осень 2013 лекция 2Technopark
 
spolzovatelskie-strukturirovannye-tipy-dannyh.pptx
spolzovatelskie-strukturirovannye-tipy-dannyh.pptxspolzovatelskie-strukturirovannye-tipy-dannyh.pptx
spolzovatelskie-strukturirovannye-tipy-dannyh.pptxyanabondarieva
 
Python и его тормоза
Python и его тормозаPython и его тормоза
Python и его тормозаAlexander Shigin
 
C#. От основ к эффективному коду
C#. От основ к эффективному кодуC#. От основ к эффективному коду
C#. От основ к эффективному кодуVasiliy Deynega
 
AlgoCollections (RUS)
AlgoCollections (RUS)AlgoCollections (RUS)
AlgoCollections (RUS)Anton Bukov
 
CPU Performance in Java.
CPU Performance in Java.CPU Performance in Java.
CPU Performance in Java.Dzmitry Hil
 
set multiset.pptx
set multiset.pptxset multiset.pptx
set multiset.pptxsdfsdf87
 
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...CocoaHeads
 
Java осень 2014 занятие 3
Java осень 2014 занятие 3Java осень 2014 занятие 3
Java осень 2014 занятие 3Technopark
 
[JAM 1.1] Clean Code (Paul Malikov)
[JAM 1.1] Clean Code (Paul Malikov)[JAM 1.1] Clean Code (Paul Malikov)
[JAM 1.1] Clean Code (Paul Malikov)Evgeny Kaziak
 

Semelhante a Java. Массивы. Многомерные массивы. (20)

Массивы в Java
Массивы в JavaМассивы в Java
Массивы в Java
 
2.7 Многомерные массивы
2.7 Многомерные массивы2.7 Многомерные массивы
2.7 Многомерные массивы
 
4. Многомерные массивы и массивы массивов в C#
4. Многомерные массивы и массивы массивов в C#4. Многомерные массивы и массивы массивов в C#
4. Многомерные массивы и массивы массивов в C#
 
sda
sdasda
sda
 
Объектно-ориентированное программирование. Лекции 9 и 10
Объектно-ориентированное программирование. Лекции 9 и 10Объектно-ориентированное программирование. Лекции 9 и 10
Объектно-ориентированное программирование. Лекции 9 и 10
 
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...
 
04 array
04 array04 array
04 array
 
3.4 Объекты и классы
3.4 Объекты и классы3.4 Объекты и классы
3.4 Объекты и классы
 
3.8 Класс массива
3.8 Класс массива3.8 Класс массива
3.8 Класс массива
 
C++ осень 2013 лекция 2
C++ осень 2013 лекция 2C++ осень 2013 лекция 2
C++ осень 2013 лекция 2
 
spolzovatelskie-strukturirovannye-tipy-dannyh.pptx
spolzovatelskie-strukturirovannye-tipy-dannyh.pptxspolzovatelskie-strukturirovannye-tipy-dannyh.pptx
spolzovatelskie-strukturirovannye-tipy-dannyh.pptx
 
Progr labrab-4-2013-c++
Progr labrab-4-2013-c++Progr labrab-4-2013-c++
Progr labrab-4-2013-c++
 
Python и его тормоза
Python и его тормозаPython и его тормоза
Python и его тормоза
 
C#. От основ к эффективному коду
C#. От основ к эффективному кодуC#. От основ к эффективному коду
C#. От основ к эффективному коду
 
AlgoCollections (RUS)
AlgoCollections (RUS)AlgoCollections (RUS)
AlgoCollections (RUS)
 
CPU Performance in Java.
CPU Performance in Java.CPU Performance in Java.
CPU Performance in Java.
 
set multiset.pptx
set multiset.pptxset multiset.pptx
set multiset.pptx
 
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
 
Java осень 2014 занятие 3
Java осень 2014 занятие 3Java осень 2014 занятие 3
Java осень 2014 занятие 3
 
[JAM 1.1] Clean Code (Paul Malikov)
[JAM 1.1] Clean Code (Paul Malikov)[JAM 1.1] Clean Code (Paul Malikov)
[JAM 1.1] Clean Code (Paul Malikov)
 

Mais de Unguryan Vitaliy

Модульное тестирование.
Модульное тестирование. Модульное тестирование.
Модульное тестирование. Unguryan Vitaliy
 
Архитектурный шаблон MVC
Архитектурный шаблон MVCАрхитектурный шаблон MVC
Архитектурный шаблон MVCUnguryan Vitaliy
 
Работа в команде, управление программными проектами
Работа в команде, управление программными проектамиРабота в команде, управление программными проектами
Работа в команде, управление программными проектамиUnguryan Vitaliy
 
Системы контроля версий
Системы контроля версийСистемы контроля версий
Системы контроля версийUnguryan Vitaliy
 
Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.Unguryan Vitaliy
 
Введение в язык программирования «Java»
Введение в язык программирования «Java»Введение в язык программирования «Java»
Введение в язык программирования «Java»Unguryan Vitaliy
 
Шаблоны проектирования GoF
Шаблоны проектирования GoFШаблоны проектирования GoF
Шаблоны проектирования GoFUnguryan Vitaliy
 
Ввведение в java
Ввведение в javaВвведение в java
Ввведение в javaUnguryan Vitaliy
 
Введение в hibernate
Введение в hibernateВведение в hibernate
Введение в hibernateUnguryan Vitaliy
 
Введение в Spring
Введение в SpringВведение в Spring
Введение в SpringUnguryan Vitaliy
 
Cookies, session и другое в JSP
Cookies, session и другое в JSPCookies, session и другое в JSP
Cookies, session и другое в JSPUnguryan Vitaliy
 
Сетевое взаимодействие
Сетевое взаимодействиеСетевое взаимодействие
Сетевое взаимодействиеUnguryan Vitaliy
 
Введение в сетевые технологии
Введение в сетевые технологииВведение в сетевые технологии
Введение в сетевые технологииUnguryan Vitaliy
 

Mais de Unguryan Vitaliy (20)

Модульное тестирование.
Модульное тестирование. Модульное тестирование.
Модульное тестирование.
 
Архитектурный шаблон MVC
Архитектурный шаблон MVCАрхитектурный шаблон MVC
Архитектурный шаблон MVC
 
Работа в команде, управление программными проектами
Работа в команде, управление программными проектамиРабота в команде, управление программными проектами
Работа в команде, управление программными проектами
 
Системы контроля версий
Системы контроля версийСистемы контроля версий
Системы контроля версий
 
Принципы SOLID
Принципы SOLIDПринципы SOLID
Принципы SOLID
 
Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.
 
Введение в язык программирования «Java»
Введение в язык программирования «Java»Введение в язык программирования «Java»
Введение в язык программирования «Java»
 
Шаблоны проектирования GoF
Шаблоны проектирования GoFШаблоны проектирования GoF
Шаблоны проектирования GoF
 
Ввведение в java
Ввведение в javaВвведение в java
Ввведение в java
 
Введение в hibernate
Введение в hibernateВведение в hibernate
Введение в hibernate
 
Spring AOP
Spring AOPSpring AOP
Spring AOP
 
Введение в Spring
Введение в SpringВведение в Spring
Введение в Spring
 
Cookies, session и другое в JSP
Cookies, session и другое в JSPCookies, session и другое в JSP
Cookies, session и другое в JSP
 
JSTL
JSTLJSTL
JSTL
 
JSP
JSPJSP
JSP
 
JDBC
JDBCJDBC
JDBC
 
Сервлеты
СервлетыСервлеты
Сервлеты
 
Сетевое взаимодействие
Сетевое взаимодействиеСетевое взаимодействие
Сетевое взаимодействие
 
Введение в сетевые технологии
Введение в сетевые технологииВведение в сетевые технологии
Введение в сетевые технологии
 
XML
XMLXML
XML
 

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

  • 2. Что такое массивы? Массив в java это – конечное, именованное множество переменных одного типа.
  • 3. Синтаксис объявления одномерного массива тип[] имя или тип имя [] Где тип — это тип элементов массива, а имя — уникальный идентификатор (согласно правилам именования переменных). int cats[]; // мы объявили переменную массива int[] cats; //другой вариант объявления
  • 4. Резервация памяти и инициализация массивов значениями по умолчанию int[] cats; // все элементы массива равны 0 cats = new int[12]; int[] cats = new int[12]; int number = 12; int[] cats = new int[number]; // все элементы равны null String cats[] = new String[12];
  • 5. Явная инициализация массива int[] cats = new int[] {5, 10, 24, 26}; int[] cats = {5, 1, 3}; // упрощённая форма записи String catNames[] = new String[] {" Рыжик" , " Барсик" , " Том" };
  • 6. Индексация элементов массива int[] cats = new int[10]; // массив из шести элементов с начальным значением 0 для каждого элемента Важно!!! Индексация массивов начинается с нуля.
  • 10. Индексация элементов cats[3] = 5; // четвёртому элементу присвоено значение 5 cats[5] = 7; // шестому элементу присвоено значение 7 System.out.println(cats[3]); // отображение четвертого элемента cats[6] = 7; При выходе за границы массива выбрасывается исключение ArrayIndexOutOfBoundsException
  • 11. Размер массива Размер массива может быть запрошен через его свойство length. int mas = new int[6]; int size = mas.lenght; System.out.println(" Размер массива = " + size);
  • 12. Схема размещения массивов в памяти char mas = new char[1] Заголовок 8 байт + 4 байта = 12 байт Примитивы char 2 байта х 1 = 2 байта Выравнивание для кратности 8 2 байта Итого 16 байт
  • 13. Инициализация массива с помощью цикла int [] mas = new int[3]; mas[0] = 0; mas[1] = 1; mas[2] = 2; int [] mas = new int[3]; for (int i = 0; i < mas.lenght ; i++) { mas[i] = i; }
  • 14. Задача «Синоптик» Температура I II III IV V VI VII VIII IX X XI XII Год Средняя -1,7 -1,0 2,6 9,0 15,119,421,421,217,111,1 5,9 1,4 Дневная максимальна я 1 1 5 12 19 24 26 26 21 15 8 4 Ночная минимальная -4 -4 0 6 12 16 18 17 13 8 3 -1
  • 15. Многомерные массивы Для создания многомерных массивов используются дополнительные скобки. int [][] a = { { 1, 2, 3 }, { 4, 5, 6 } } // трёхмерный массив фиксированной длины int [][][] b = new int [2][4][4];
  • 16. Масивы массивов В Java многомерные массивы представляют собой массивы массивов. При объявлении переменной многомерного массива для указания каждого дополнительного индекса используют отдельный набор квадратных скобок.
  • 17. Двухмерный массив (частный случай многомерного) String[][] arr = new String[4][3]; arr[0][0] = "1"; arr[0][1] = "Васька"; arr[0][2] = "121987102";
  • 20. Очень важно понять Каждый из массивов с элементами int, располагаются в памяти непрерывным куском, но где и как расположены каждый из них это определяет виртуальная машина java.
  • 21. Очень важно понять Исходя из этого есть рекомендация, что наружные (левые) размерности массива лучше делать меньше, а самые больше размерности внутри (правее), поскольку это, во-первых, уменьшит фрагментацию памяти, а во вторых потребует гораздо меньше памяти для размещения массива.
  • 22. Правило создания двухмерных массивов int[][] a = new int[10][1000]; int[][] b = new int[1000][10]; В случае массива a, количество порождаемых в памяти объектов равно 11, а в случае массива b – 1001. Создание и обслуживание каждого объекта в памяти виртуальной машины имеет свои накладные расходы, так как виртуальная машина считает ссылки для каждого объекта, хранит его атрибуты и т.д. и т.п.
  • 23. Примеры использования - Таблицы - Матрицы - Структурированные данные
  • 24. Отложенная инициализация int [][] twoD = new int[3][]; // память под первое измерение // далее резервируем память под второе измерение twoD[0] = new int[4]; twoD[1] = new int[4]; twoD[2] = new int[4];
  • 25. Преобразования массива в строку int [] mas = new int[]{1,2,3}; Arrays.toString(mas) Преобразует элементы массива в строчное представление, в квадратных скобках, элементы разделены запятыми.
  • 26. Методы класса Arrays String [][] objects = new String[3][3]; Arrays.deepToString(objects); Формирует строку из массивов, которые в качестве элементов содержат объекты. Очень удобен для вывода содержания двухмерных массивов.
  • 27. Методы класса Arrays Метод fill() просто дублирует одно заданное значение в каждом элементе массива (в случае объектов копирует одну ссылку в каждый элемент). int size = 4; boolean[] test1 = new boolean[size]; Arrays.fill(test1, true);
  • 28. Методы класса Arrays int [] mas = new int[] {3, 1, 4, 6, 2}; Arrays.sort(mas); Сортирует значения массива в естественном порядке (от меньшего к большему).
  • 29. Методы класса Arrays Метод equals(массив, массив) применяется для проверки на равенство целых массивов. Чтобы два массива считались равными, они должны содержать одинаковое количество элементов, и каждый элемент должен быть эквивалентен соответствующему элементу другого массива. boolean test = Arrays.equals(m1,m2);
  • 30. System.arraycopy() Копирование данных из одного массива в другой. System.arraycopy(src, srcPos, dest, destPos, length) Данный метод, после всех проверок, копирует length элементов массива src, начиная с позиции srcPos, в массив dest, начиная с позиции destPos. Его удобно использовать, когда нужно скопировать лишь часть массива.