модуль 1 - 3-Массивы.ppt
- Количество слайдов: 18
IT ШКОЛА SAMSUNG Модуль 1. Основы программирования Одномерные массивы
ТИПЫ ДАННЫХ В JAVA Примитивные типы Описание переменной <тип> <имя перем. >[ = <знач. >]; Примеры: Целое число int a 2; double xx =. 15; Вещественное число Ссылки на объект или просто ОБЪЕКТ ü Переменная, ссылающаяся на объект, хранит биты, которые описывают путь для доступа к объекту. ü Она хранит не объект как таковой, а нечто вроде указателя или адреса. Только в Java мы не знаем, что на самом деле находится внутри такой переменной. Но точно известно, что чем бы она ни была, она всегда представляет лишь один объект. И JVM умеет использовать ссылку для его получения. ü Объект существует лишь в одном месте – в куче, управляемой сборщиком мусора! 2
ТИПЫ ДАННЫХ В JAVA Простые переменные Ссылки на объект Dog my. Dog = new Dog(); byte x =7 Биты, представляющие число 7, хранятся в переменной Биты, описывающие способ получения объект Dog, хранятся в переменной НО! Сам по себе объект Dog не в переменной! 3
Три шага на пути к объявлению, созданию и инициализации объекта
Три шага на пути к объявлению, созданию и инициализации объекта
Три шага на пути к объявлению, созданию и инициализации объекта
Жизнь в куче под управлением сборщика мусора Book b = new Book(); Book c = new Book(); Объявляем две ссылки типа Book. Создаем два новых объекта Book. Присваиваем ссылочным переменным объекты типа Book. Два объекта Book теперь находятся в куче. Ссылок: 2. Объектов: 2.
Жизнь в куче под управлением сборщика мусора Book d = c; Объявляем новую ссылку типа Book. Вместо того чтобы создавать новый, третий по счету, объект Book, присваиваем ссылке значение переменной с. Мы как бы говорим: «Возьми биты из с, скопируй их и помести эту копию в d» . Переменные с и d ссылаются на один и тот же объект. Ссылки с и d хранят две разные копии одного и того же значения. Два пульта управления для одного телевизора. Ссылок: 3. Объектов: 2.
Жизнь в куче под управлением сборщика мусора c = b; Берем значение переменной b и присваиваем его переменной с. Биты внутри переменной b копируются, и новая копия помещается в переменную с. И b, и с ссылаются на один и тот же объект. Ссылок: 3. Объектов: 2.
Жизнь и смерть в куче Book b = new Book(); Book c = new Book(); Объявляем две ссылки типа Book. Создаем два новых объекта Book. Присваиваем ссылочным переменным объекты типа Book. Два объекта Book теперь находятся в куче. Активных ссылок: 2. Активных объектов: 2.
Жизнь и смерть в куче b = c; Берем значение переменной с и присваиваем его переменной b. Биты внутри переменной с копируются, и новая копия помещается в переменную b. Обе переменные хранят одинаковые значения. И b, и с ссылаются на один и тот же объект. Объект 1 становится недоступным и пригоден для обработки сборщиком мусора (СМ). Активных ссылок: 2. Доступных объектов: 1. Недоступных объектов: 1. Первый объект, на который ссылалась переменная b, больше не имеет ссылок Он недоступен.
Жизнь и смерть в куче c = null; Берем значение переменной с и присваиваем его переменной b. Биты внутри переменной с копируются, и новая копия помещается в переменную b. Обе переменные хранят одинаковые значения. И b, и с ссылаются на один и тот же объект. Объект 1 становится недоступным и пригоден для обработки сборщиком мусора (СМ). Активных ссылок: 2. Доступных объектов: 1. Недоступных объектов: 1. Первый объект, на который ссылалась переменная b, больше не имеет ссылок Он недоступен.
МАССИВЫ В JAVA – ТОЖЕ ОБЪЕКТЫ! Массив в Java – это всегда объект, даже если он хранит элементы простых типов! int[] nums; Объявляем переменную целочисленного массива. Переменна массива – это «пульт управления» объектом Array nums = new int[7]; Создаем новый целочисленный массив с семью элементами и присваиваем его ранее объявленной переменной nums с типом int[] Присваиваем каждому элементу массива целочисленное значение. !!! Элементы целочисленного массива – это всего лишь переменные типа int nums[0] = 6; nums[1] = 19; nums[2] = 44; nums[3] = 42; nums[4] = 10; nums[5] = 20; nums[6] = 1; 13
ИНИЦИАЛИЗАЦИЯ МАССИВА Массив инициализируется (заполняется начальными значениями) при его создании: По умолчанию компилятор инициализирует числовые массивы нулевыми значениями, символьные – нулевым символом (символом с кодом 0), булевские – значением false. Если надо инициализировать другими значениями: тип_массива имя_массива[] = new тип_массива[] {список_выражений}; Например: int a[] = new int [] {3, 11, x, 2*x, y – x}; Размер массива устанавливается равным длине списка! int a[] = {3, 11, x, 2*x, y – x}; Можно не писать NEW ! При создании массива его размер сохраняется в свойстве length System. out. println(a. length); 14
ДОСТУП К ЭЛЕМЕНТАМ МАССИВА Элементы массива нумеруются с нуля! Номер элемента называется индексом. Для того чтобы обратиться к какому-либо элементу массива необходимо указать имя массива и его номер в квадратных скобках имя_массива[выражение_целого_типа] Индекс элемента в диапазоне от 0 до length – 1 Заполнение массива генератором случайных чисел for (int i = 0; i < a. length; i++) { a[i] = (int) (Math. random() * 100); System. out. print("t" + a[i]); } Значения элементов массива будут в диапазоне [0; 99] Метод random() позволяет получить последовательность случайных значений типа double из диапазона [0, 1)
FOR при работе с МАССИВАМИ Если элементы массива нужно только ЧИТАТЬ, то можно воспользоваться модификацией оператора FOR (for each) for (тип_массива имя_переменной: имя_массива) тело_цикла С эту переменную последовательно копируются элементы массива. Переменная используется только в теле цикла Любые ее изменения никак не влияют на элемент массива! int sum = 0; for (int x: a) sum += x;
ПРИМЕР – СОЗДАНИЕ, ИНИЦИАЛИЗАЦИЯ И ЗАПОЛНЕНИЕ МАССИВА public class my. Array { public static void main(String[] args) { System. out. println("Массив, заполненный случайными числами"); // Объявление массива int [] a; // Создание массива a = new int [10]; // Заполнение массива случайными числами for(int i = 0; i < a. length; i++) { a[i] = (int) (Math. random() * 100); System. out. print("t" + a[i]); } System. out. println(); System. out. println("n. Массив, созданный списком инициализации"); int x = 5; // Объявление и создание массива int b[] = {3, 11, x, 2 * x, a[1]-a[2]}; for(int y: b) System. out. print("t" + y); System. out. println(); } } 17
Самостоятельная работа Silver. Tests. ru - (Java) Одномерные массивы - доделать public NAME(…) { …. } Домашнее задание: Silver. Tests. ru - (Java) Одномерные массивы – доделать ГЛАВНОЕ: ОБДУМАТЬ ИТОГОВЫЙ ПРОЕКТ 18


