
- •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. Робота із пріоритетами потоків
71.Інтерфейс List.
Класи які реалізують цей інтерфейс містять упорядковану послідовність об'єктів ( Об'єкти зберігаються в тому порядку в якому вони були додані ) . D JDK 1.2 був перероблений клас Vector , так , що він тепер реалізує інтерфейс List. інтерфейс List розширює інтерфейс Collection т.ч. будь-який класс що імплементує List реалізує всі методи визначені в Collection , в той же час вводяться нові методи які дозволяють додавати і видаляти елементи зі списку . List забезпечує так само ListIterator який дозволяє переміщатися як вперед , так і назад , за елементами списку.
AbstractList будучи абстрактним класом представляє собою основу для реалізації різних варіантів інтерфейсу List
Слід пам'ятати , що в пакеті java.awt так само визначено клас List використовуваний для
подання списку варіантів . Т.ч. що б уникнути плутанини , слід використовувати
повністю кваліфіковане ім'я java.util.List
72.Інтерфейс Map.
Класи які реалізують цей інтерфейс зберігають невпорядкований набір об'єктів парами ключ / значення . Кожен ключ має бути унікальним. Hashtable після модифікації в JDK 1.2 реалізує інтерфейс Map . Порядок проходження пар ключ / значення не визначений.
Інтерфейс Map НЕ розширює інтерфейс Collection. AbstractMap будучи абстрактним
класом представляє собою основу для реалізації різних варіантів інтерфейсу Map
Слід звернути увагу , що List і Set розширюють інтерфейс Collection , а Map ні.
73.Інтерфейс SortedSet.
Цей інтерфейс розширює Set вимагаючи , що б вміст набору був упорядкованим . Тільки об'єкт що імплементує SortedSet може містити об'єкти які реалізують інтерфейс Comparator або може порівнюватися з використанням зовнішнього об'єкта що реалізовує інтерфейс comparator .
74.Інтерфейс SortedMap.
Цей інтерфейс розширює Map вимагаючи , щоб вміст колекції було упорядковано
за значеннями ключів.
75.Інтерфейс Iterator.
У Java 1 для перебору елементів колекції використовувався інтерфейс Enumeration . У Java 2 для цих цілей повинні використовуватися об'єкти які реалізують інтерфейс Iterator . Всі класи які реалізують інтерфейс Collection повинні реалізувати метод , iterator , який повертає об'єкт що реалізує інтерфейс Iterator . Iterator вельми схожий на Enumeration , з тією лише відмінністю , що в ньому визначено метод remove , який дозволяє видалити об'єкт з колекції , для якої Iterator був створений .
76.Конкретні класи колекцій.
LIST: Класи LinkedList і ArrayList мають схожу функціональність. Однак з точки зору продуктивності вони відрізняються .Так в ArrayList помітно швидше (приблизно на порядок)
здійснюються операції проходу по всьому списку ( ітерації ) і отримання даних. LinkedList майже на порядок швидше здійснює операції видалення і додавання нових
елемнтів .
MAP: Hashtable призначений для зберігання об'єктів у вигляді пар ключ / значення . Із самої назви випливає, що Hаshtable використовує алгоритм хешування для збільшення швидкості доступу до даних.
Є кілька міркувань , що відносяться до продуктивності класів , що використовують для зберігання даних алгоритм хешування . Розмір масиву. Якщо масив буде занадто малий, то пов'язані списки будуть занадто довгими , і швидкість пошуку буде істотно знижуватися , тому що перегляд елементів списку буде такою ж як у звичайному масиві Що б уникнути цього задається якийсь коефіцієнт заповнення. При заповненні елементів масиву в якому зберігаються ключі (або списки ключів ) на цю величину , відбувається збільшення масиву і здійснюється повторне реіндекcування . Таким чином якщо масив буде занадто малий , то він буде швидко заповняться і буде проводиться операція повторного індексування , яка забирає досить багато ресурсів. З іншого боку , якщо масив зробити великим , то при необхідності переглянути послідовно всі елементи колекції що використовує алгоритм хешування буде необхідно обробити велику кількість порожніх елементів масиву ключів.
Початковий розмір масиву і коефіцієнт завантаження колекції задаються при
конструюванні . Наприклад Hashtable ht = new Hashtable ( 1000,0.60 ) ;
Використання алгоритму хешування дозволяє гарантувати , що швидкість доступу до елементів колекції такого типу буде збільшуватися не лінійно , а логарифмічно . Таким чином , при частому пошуку яких або значень по ключу має сенсу використовувати колекції використовують алгоритм хештрування .
java.util.HashMap , - цей клас розширює AbstractMap і вельми схожий на клас Hashtable . HashMap призначений для зберігання пар об'єктів ключ / значення . Як для ключів , так для елементів допускаються значення типу null . Порядок зберігання елементів у цій колекції не збігається з порядком їх додавання. Порядок елементів у колекції так ж може змінюватися в часі. HashMap забезпечує постійний час доступу для операцій get і put . Ітерація по всіх елементах колекції пропорційна її ємності. Тому має сенс не встановлювати розмір колекцій надмірно великим , якщо достатньо часто доведеться здійснювати ітерацію за елементами . Методи HashMap не є синхронізованими . Для того , що б забезпечити нормальну роботу в багато потоковому варіанті слід використовувати або зовнішню синхронізацію потоків , або використовувати синхронізований варіант колекції Слід ще звернути увагу на різницю між HashMap і Hashtable . Hashtable існує в Java ще з перших релізів. HashMap з'явився в JDK 1.2 . Головна відмінність в тому , що Hashtable не дозволяє зберігати порожні значення , в HashMap це робити можна . Крім того , методи в Hashtable є синхронізованими , а в HasMap немає. Крім цього, слід пам'ятати , що починаючи з JDK 1.2 Hashtable реалізує інтерфейс Map , що може викликати деякі проблеми при спробі запуска додатків що використовують
більш ранні версії JDK .
java.util.TreeMap - розширює клас AbstractMap і реалізує інтерфейс SortedMap.TreeMap містить ключі в порядку зростання. Використовується або натуральне порівняння ключів , або має бути реалізований інтерфейс Comparable . Реалізація алгоритму пошуку забезпечує логарифмічну залежність часу виконання основних операцій Заборонено використання null значень для ключів. При використанні дублікатів ключів посилання на об'єкт що збережений з таким же ключем буде загублена.