Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпори JAVA.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
178.34 Кб
Скачать

30. Масиви в Java.

Масив - це кінцева послідовність упорядкованих елементів одного типу , доступ до кожного елементу в якій здійснюється за його індексом . Розмір або довжина масиву - це загальна кількість елементів в масиві. Розмір масиву задається при створенні масиву і не може бути змінений надалі. Індекс початкового елемента - 0 , наступного за ним - 1 і т. д.

У Java масиви є об'єктами . Це означає , що ім'я , яке дається кожному масиву , лише вказує на адресу якогось фрагмента даних в пам'яті. Крім адреси в цій змінній нічого не зберігається . Індекс масиву , фактично , вказує на те , наскільки треба відступити від початкового елемента масиву в пам'яті , щоб дістатися до потрібного елементу.

Щоб створити масив треба оголосити для нього відповідне ім'я , а потім з цим ім'ям зв'язати потрібний фрагмент пам'яті , де і будуть один за одним зберігатися значення елементів масиву.

Можливі такі варіанти оголошення масиву:

тип [] ім'я ;

тип ім'я [] ;

Де тип - це тип елементів масиву , а ім'я - унікальний ( незайнятий іншими змінними або об'єктами в цій частині програми) ідентифікатор , що починається з букви .

При створенні масиву ми можемо вказати його розмір, або відразу перелічити через кому всі бажані елементи в фігурних дужках (при цьому розмір буде вирахувано автоматично на основі тієї послідовності елементів , яка буде вказана) . Якщо масив був створений за допомогою оператора new, то кожен його елемент отримує значення за замовчуванням. Яким воно буде визначається на підставі типу даних ( 0 для int , 0.0 для double і т. д.).

Оголосити ім'я для масиву і створити сам масив можна на одному рядку за наступною схемою:

тип [] ім'я = new тип [ розмір] ;

тип [] ім'я = { ел0 , ел1 , ... , елN } ;

Щоб звернутися до якогось із елементів масиву для того, щоб прочитати або змінити його значення, потрібно вказати ім'я масиву і за ним індекс елемента в квадратних дужках. Елемент масиву з конкретним індексом поводиться також, як змінна.

Довжину будь-якого створеного масиву не обов'язково запам'ятовувати , бо є властивість , яка його зберігає. Звернутися до цієї властивості можна дописавши . Length до імені масиву. наприклад:

int razmer = mas1.length ;

Ця властивість не можна змінювати ( тобто йому не можна нічого привласнювати ) , можна тільки читати. Використовуючи цю властивість можна писати програмний код для обробки масиву навіть не знаючи його конкретного розміру.

Для обробки масивів завжди використовуються цикли типу « n разів» ( for ) тому, що заздалегідь відомо скільки разів повинен повторитися цикл (стільки ж разів , скільки елементів у масиві ) .

31. Приведення типів для масивів.

Переходи між масивами і примітивними типами є забороненими . Перетворення між масивами та іншими об'єктними типами можливі тільки для класу Object та інтерфейсів Cloneable і Serializable . Масив завжди можна привести до цих 3 типам , зворотний ж перехід є звуженням , і повинен проводиться явним чином на розсуд розробника. Таким чином , інтерес представляють тільки

переходи між різними типами масивів . Очевидно , що масив , заснований на примітивному типі , принципово не можна перетворити до типу масиву , заснованому на посилальному типі , і навпаки.

Для посилальних же типів такого суворого правила немає. Наприклад, якщо створити екземпляр масиву, заснованого на типі Child, то посилання на нього можна привести до типу масиву, заснованого на типі Parent.

Child c[] = new Child[3];

Parent p[] = c;

Взагалі, існує універсальне правило: масив, заснований на типі A, можна привести до масиву, заснованому на типі B, якщо сам тип A приводиться до типу B.

/ / Якщо допустимо таке приведення:

B b = (B) new A ();

/ / То допустимо і приведення масивів:

B b [] = (B []) new A [3];

Застосовуючи це правило рекурсивно можна перетворювати багатовимірні масиви. Наприклад, масив Child [] [] можна привести до Parent [] [], так як їх базові типи приводили (Child [] до Parent []) також на основі цього правила (оскільки базові типи Child і Парент приводили в силу правил спадкування) .

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]