
- •1. Історія створення Java.
- •2. Історія розвитку Java
- •3.Опишіть поняття “об’єкт”
- •4. Опишіть поняття “клас”
- •5. Опишіть типи відношень між класами
- •6. Переваги і недоліки об’єкто-зорієнтованого програмування
- •7. Опишіть правила побудови ідентифікаторів мови Java, наведіть приклади
- •8. Поняття літералів. Приклади
- •9. Оператори та операції в мові Java
- •11. Типи даних у мові Java
- •12. Клас Object
- •13. Клас String
- •14. Клас Class
- •15. Імена в Java
- •16. Пакети в Java
- •17. Область видимості імен
- •18.Об’ява класів у Java
- •19.Приведення типів у Java
- •21.Приведення посилальних типів даних.
- •22.Приведення до рядка.
- •23.Заборонені приведення.
- •24.Застосування приведення типів.
- •25.Статичні елементи.
- •26. Ключові слова this і super.
- •27. Ключове слово abstract.
- •28. Поняття інтерфейсів.
- •29. Поліморфізм.
- •30. Масиви в Java.
- •31. Приведення типів для масивів.
- •32. Клонування масивів.
- •33. Керування ходом виконання програми.
- •34. Нормальне і перерване виконання операторів.
- •35. Блоки і локальні змінні.
- •36. Порожній оператор.
- •38. Синтаксис оператора if.
- •39. Синтаксис оператора switch.
- •40. Керування циклами.
- •41.Синтаксис оператора while
- •42.Ситаксис оператора do
- •43.Синтаксис оператора for
- •44.Оператори break I continue
- •45.Іменовані блоки
- •46. Оператор return
- •47. Оператор synchronized
- •48. Помилки при роботі програми. Виняткові ситуації
- •48. Помилки при роботі програми. Виняткові ситуації
- •49.Причини виникнення помилок
- •50.Обробки виняткових ситуацій
- •51.Конструкція try-catch-finally
- •52.Використання оператора throw
- •53.Виняткові ситуації, які перевіряються і які не перевіряються
- •54.Створення класів користувача обробки виняткових ситуацій
- •55.Поняття потокв в Java
- •56.Базові класи для роботи з потоками
- •57.Класс Thread
- •58. Інтерфейс Runnable
- •60. Потоки-демони
- •61.Синхронізація роботи потоків.
- •62.Класи обгортки для примітивних типів.
- •63.Клас Math.
- •66.Клас Calendar.
- •67.Клас TimeZone.
- •68. Колекції java
- •69.Інтерфейс Collection.
- •70.Інтерфейс Set.
- •71.Інтерфейс List.
- •72.Інтерфейс Map.
- •73.Інтерфейс SortedSet.
- •74.Інтерфейс SortedMap.
- •75.Інтерфейс Iterator.
- •76.Конкретні класи колекцій.
- •77.Клас Properties.
- •78. Інтерфейс Comparator.
- •79.Клас BitSet.
- •80.Клас Random.
- •81.Система введення/виведення. Потоки даних.
- •82.Класи реалізації потоків даних.
- •84. Робота із файловою системою.
- •59. Робота із пріоритетами потоків
19.Приведення типів у Java
Як вже говорилося, Java є строго типізованою мовою, а це означає, що кожен вираз і кожна змінна має строго певний тип вже на момент компіляції. Тип встановлюється на основі структури застосовуваних виразів і типів літералів, змінних і методів, використовуваних у цих виразах.
Наприклад:
long a = 3;
a = 5 + 'A' + a;
print ("a =" + Math.round (a/2F));
Розглянемо, як у цьому прикладі компілятор встановлює тип кожного виразу і які перетворення (conversion) типів необхідно здійснити при кожній дії.
У першому рядку літерал 3 має тип за замовчуванням, тобто int. При присвоєнні цього значення змінної типу long необхідно провести перетворення.
У другому рядку спочатку здійснюється складання значень типу int і char. Другий аргумент буде перетворений так, щоб операція проводилася з точністю в 32 біта. Другий оператор складання знову зажадає перетворення, так як наявність змінної a збільшує точність до 64 біт.
У третьому рядку спочатку буде виконана операція ділення, для чого значення long треба буде привести до типу float, тому що другий операнд - дробовий літерал. Результат буде переданий в метод Math.round, який зробить математичне округлення і поверне цілочисельний результат типу int. Це значення необхідно перетворити в текст, щоб здійснити подальшу конкатенацію рядків. Як буде показано нижче, ця операція проводиться в два етапи - спочатку простий тип приводиться до об'єктному класу-"обгортці" (в даному випадку int до Integer), а потім у отриманого об'єкту викликається метод toString (), що дає перетворення до рядка.
Даний приклад показує, що навіть прості рядки можуть містити численні перетворення, часто непомітні для розробника. Часто бувають і такі випадки, коли програмісту необхідно явно змінити тип деякого виразу або змінної, наприклад, щоб скористатися придатним методом або конструктором.
Згадаймо вже розглянутий приклад:
int b = 1;
byte c = (byte)-b;
int i = c;
Тут у другому рядку необхідно провести явне перетворення, щоб привласнити значення типу int змінній типу byte. У третьому ж рядку зворотнє приведення проводиться автоматично, неявним для розробника чином.
Розглянемо спочатку, які переходи між різними типами можна здійснити.
Види привидів
У Java передбачено сім видів привидів:
тотожне (identity);
розширення примітивного типу (widening primitive);
звуження примітивного типу (narrowing primitive);
розширення об'єктного типу (widening reference);
звуження об'єктного типу (narrowing reference);
перетворення до рядка (String);
заборонені перетворення (forbidden).
20.Приведення примітивних типів даних. Примітивні типи Java поділяються на цілочислові(integer), дробові(floating-point) та булеві(boolean). Цілочислові типи
Цілочислові типи – це byte, short, int, long, також до них відносять й char. Перші чотири типи мають довжину 1,2, 4 і 8 байтів відповідно, довжина char – 2 байти, що безпосередньо випливає з того, що всі символиJ ava описуються стандартом Unicode. Над цілочисловими аргументами можна виконувати наступні операції:
операції порівняння (повертають булеві значення)
<, <=, >, >=
==, !=
числові операції (повертають числове значення)
унарні операції + і –
арифметичні операції +, -, *, /, %
операції інкременту и декременту (в префікс ній і постфікс ній формі) ++ і–
операції бітового зсуву <<, >>, >>>
бітові операції ~, &, |, ^
оператор з умовою ?:
оператор приведення типів
оператор конкатенації з рядком +
Дробові типи
Дробові типи – це float іdouble. Їх довжини – 4 і 8 байтів відповідно. Обидва типи знакові. В таблиці наведені їх характеристики:
Для цілочислових типів область значень задавалася верхньою і нижньою межами, досить близькими за абсолютною величиною. Для дробових добавляється ще одне обмеження – наскільки можна наблизитися до нуля, тобто – яке найменше додатне ненульове значення. Отже, неможливо задати літерал заздалегідь більший, ніж дозволяє тип даних, це зумовить помилку overflow. І не можна задати літерал, значення якого за модулем надто мале для даного типу, компілятор згенерує помилку underflow.
Булів тип
Булів тип представлений одним типом boolean, який може зберігати всього два можливих значення – true і false. Величини саме цього типу є результатом операцій порівняння.
Над булевими аргументами можна виконувати наступні операції:
операції порівняння (повертають булеве значення)
==, !=
логічні операції (повертають булеве значення)
!
&, |, ^
&&, ||
оператор з умовою ?:
оператор конкатенації з рядком +