Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Контакти
 


Тлумачний словник
Авто
Автоматизація
Архітектура
Астрономія
Аудит
Біологія
Будівництво
Бухгалтерія
Винахідництво
Виробництво
Військова справа
Генетика
Географія
Геологія
Господарство
Держава
Дім
Екологія
Економетрика
Економіка
Електроніка
Журналістика та ЗМІ
Зв'язок
Іноземні мови
Інформатика
Історія
Комп'ютери
Креслення
Кулінарія
Культура
Лексикологія
Література
Логіка
Маркетинг
Математика
Машинобудування
Медицина
Менеджмент
Метали і Зварювання
Механіка
Мистецтво
Музика
Населення
Освіта
Охорона безпеки життя
Охорона Праці
Педагогіка
Політика
Право
Програмування
Промисловість
Психологія
Радіо
Регилия
Соціологія
Спорт
Стандартизація
Технології
Торгівля
Туризм
Фізика
Фізіологія
Філософія
Фінанси
Хімія
Юриспунденкция






Масиви як тип даних в Java

План

Тема 6 Масиви. Робота з рядками. Виключення. Пакет java.lang

Перетворення до рядку

Це перетворення вже не раз згадувалося. Будь-який тип може бути приведень до рядка, тобто до екземпляра класу String. Таке перетворення є винятковим в силу того, що охоплює абсолютно всі типи, у тому числі й boolean.

Нагадаємо, як перетворюються різні типи.

- числові типи записуються в текстовому вигляді без втрати точності представлення. Формально таке перетворення відбувається у два етапи. Спочатку на основі примітивного значення породжується примірник відповідного «класу-обгортки», а потім у нього викликається метод toString(). Алі оскільки ці дії зовні непомітні, багато JVM оптимізують їх і перетворять примітивні значення в текст безпосередньо.

- логічний тип приводитися до рядку "true" або "false" залежно від значення.

- для об'єктних величин викликається метод toString(). Якщо метод повертає null, то результатом буде рядок «null».

6 Заборонені перетворення

Не всі переходи між довільними типами допустимі. Наприклад, до заборонених перетворень відносяться: переходи від будь-якого вказівного типу до примітивного, від примітивного - до вказівного (крім перетворень до рядку). Вже згадуваний приклад - тип boolean - не можна привести ні до якого іншого типу, крім boolean (як завжди - за винятком приведення до рядка). Потім, неможливо привести один до одного типи, що знаходяться не на одній, а на сусідніх гілках дерева наслідування. У прикладі, який розглядався для ілюстрації перетворень посилальних типів, перехід від Child до Child2 заборонений. Справді, посилання типу Child може вказувати на об'єкти, породжені тільки від класу Child або його спадкоємців. Це виключає вірогідність того, що об'єкт буде сумісний з типом Child2.

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

Зрозуміло, спроба здійснити заборонене перетворення викличе помилку компіляції.


 

1 Масиви як тпи даних в Java

2 Ініціалізація масивів

3 Клонування

4 Рядки

5 Помилки при роботі програми. Виключення (Exceptions)

6 Обробка виняткових ситуації. Конструкція try-cath

7 Використання оператора throw

 

Відразу обмовимося, що в Java масив символів char[] і клас String є різними типами. Їхнього значення можуть легко конвертуватися з одного в інший за допомогою спеціальних методів, але все-таки вони не ставляться до ідентичних типів.

Як уже говорилося, масиви в Java є об'єктами (примітивних типів в Java усього вісім і їхня кількість не змінюється), їхній тип прямо успадковується від класу Object..

Базовий тип також може бути масивом. У такий спосіб конструюється масив масивів, або багатомірний масив.

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

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

 

Object o = new int[4];

 

Це дає цікаву можливість для масивів, заснованих на типі Object, зберігати як елемент посилання на самого себе:

 

2 Ініціалізація масивів

Якщо створити масив на основі примітивного числового типу, то після створення всі елементи масиву мають значення за замовчуванням, тобто 0. Якщо масив оголошений на основі примітивного типу boolean, то й у цьому випадку всі елементи будуть мати значення за замовчуванням false.

Розглянемо створення масиву на основі посилального типу. Припустимо, це буде клас Point. При створенні екземпляра масиву із застосуванням ключового слова new не створюється жоден об'єкт класу Point, створюється лише один об'єкт масиву. Кожний елемент масиву буде мати порожнє значення null.

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

Крім того, існує й інший спосіб створення масивів - ініціалізатори. В цьому випадку ключове слово new не використовується, а ставляться фігурні дужки, і в них через кому перераховуються значення всіх елементів масиву. Наприклад, для числового масиву явна ініціалізація записується в такий спосіб:

 

int i[]={1, 3, 5};

int j[]={}; // еквівалентно new int[0]

 

Довжина масиву обчислюється автоматично, виходячи з кількості введених значень. Далі створюється масив такої довжини й кожному його елементу привласнюється відповідне значення.Аналогічно можна породжувати масиви на основі об'єктних типів.

Однак ініціалізатор не можна використовувати для анонімного створення екземплярів масиву, тобто не для ініціалізації змінної, а, наприклад, для передачі параметрів методу або конструктору.

Однак такий погляд на двовимірні й багатомірні масиви є неповним. Більше точний підхід полягає в тому, що в Java немає двовимірних, і взагалі багатомірних масивів, а є масиви, базовими типами яких є також масиви. Наприклад, тип int[] означає «масив чисел», а int[][] означає «масив масивів чисел».

Корисно підрахувати, скільки об'єктів породжується вираженням new int[3][5]. Правильний підрахунок такий: створюється один масив масивів (один об'єкт) і три масиви чисел, кожний довжиною 5 (три об'єкти). Разом, чотири об'єкти.

Взагалі, при створенні багатомірних масивів за допомогою new необхідно вказувати всі пари квадратних дужок, відповідно кількості вимірів. Але заповненою обов'язково повинна бути лише крайня ліва пара, це значення задасть довжину верхнього масиву масивів. Якщо заповнити наступну пару, то цей масив заповниться не значеннями за замовчуванням null, а новими створеними масивами з меншою на одиницю розмірністю. Якщо заповнено другу пару дужок, то можна заповнити третю, і так далі.

Аналогічно, для створення багатомірних масивів можна використовувати ініціалізатори. У цьому випадку застосовується стільки вкладених фігурних дужок, скільки потрібно.


Читайте також:

  1. Аналіз паралельного інтерейсу з DSP-процесорами: запис даних в ЦАП, що під’єднаний до адресного простору пам’яті
  2. Аналіз паралельного інтерфейсу з DSP-процесорами: читання даних з АЦП, що під’єднаний до адресного простору пам’яті
  3. Аналіз статистичних даних про склад та плинність кадрів, які обіймали керівні
  4. Аналіз та інтерпретація одержаних даних
  5. Архіватори даних.
  6. Архітектура баз даних
  7. Аудит розрахунків за відшкодуванням завданих збитків
  8. Бази даних АС ДЗК
  9. Бази даних як засіб зберігання й обробки інформації
  10. Банки даних
  11. Безпека даних
  12. Введення даних




Переглядів: 1665

<== попередня сторінка | наступна сторінка ==>
Види приведення даних | StringBuffer

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

 

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.004 сек.