
- •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. Робота із пріоритетами потоків
79.Клас BitSet.
Клас BitSet призначений для роботи з послідовностями бітів. кожен компонент цієї колекції може приймати булеве значення , яке позначає встановлено біт чи ні. Вміст BitSet може бути модифіковано вмістом іншого BitSet з використанням операцій AND , OR або XOR ( виключає або )BitSet має поточний розмір (кількість встановлених бітів ) що може динамічно
міняться. За замовчуванням всі біти в наборі встановлюються в 0 ( false ) . установка і очистка бітів в BitSet здійснюється методами set ( int index ) і clear ( int index ) Метод int length () повертає " логічний" розмір набору бітів , int size () повертає кількість пам'яті займаної бітової послідовністю BitSet .
public class Test {
public Test() {
}
public static void main(String[] args) {
Test test = new Test();
BitSet bs1 = new BitSet();
BitSet bs2 = new BitSet();
bs1.set(0);
bs1.set(2);
bs1.set(4);
System.out.println("Length = " + bs1.length() + " size = " +
bs1.size());
System.out.println(bs1);
bs2.set(1);
bs2.set(2);
bs1.and(bs2);
System.out.println(bs1);
}
}
Length = 5 size = 64
{0, 2, 4}
{2}
80.Клас Random.
Клас Random використовується для отримання послідовності псевдовипадкових чисел. У якості " зерна" використовується 48 бітове число. Якщо для ініціалізації Random використовувати одне і те ж число , буде отримана та ж сама послідовність псевдовипадкових чисел. У класі Random визначено так само кілька методів які повертають
випадкові величини для примітивних типів Java
Додатково слід відзначити наявність двох методів double nextGaussian ( ) – повертає випадкове число в діапазоні від 0.0 до 1.0 розподілене за нормальним законом , а void nextBytes ( byte [] arr ) - заповнює масив arr випадковими величинами типу byte
public class Test {
public Test() {
}
public static void main(String[] args) {
Test test = new Test();
Random r = new Random(100);
// Generating the same sequence numbers
for(int cnt=0;cnt<9;cnt++){
System.out.print(r.nextInt() + " ");
}
System.out.println();
r = new Random(100);
for(int cnt=0;cnt<9;cnt++){
System.out.print(r.nextInt() + " ");
}
System.out.println();
// Generating sequence of bytes
byte[] randArray = new byte[8];
r.nextBytes(randArray);
test.dumpArray(randArray);
}
void dumpArray(byte[] arr){
for(int cnt=0;cnt< arr.length;cnt++){
System.out.print(arr[cnt]);
}
System.out.println();
}
}
-1193959466 -1139614796 837415749 -1220615319 -1429538713 118249332 -951589224
-1193959466 -1139614796 837415749 -1220615319 -1429538713 118249332 -951589224
81;-6;-107;77;118;17;93;-98;
81.Система введення/виведення. Потоки даних.
Зазвичай частина обчислювальної платформи , яка відповідає за обмін даними , так і називається - система введення / виводу. У Java вона представлена пакетом java.io ( input / output ) . Реалізація системи введення / виводу ускладнюється не тільки широким спектром джерел та одержувачів даних , але ще і різними форматами передачі інформації. нею можна обмінюватися в двійковому поданні , символьному чи текстовому із застосуванням деякого кодування ( тільки для російської мови їх налічується від 4 штук) , або передавати числа в різних представленнях. Доступ до даних може знадобитися як послідовний (наприклад , зчитування HTML сторінки) , так і довільний (складна робота з декількома частинами одного файлу) . Найчастіше для підвищення продуктивності застосовується буферизація .
У Java для опису роботи з введення / вив використовується спеціальне поняття потік даних ( stream ) . Потік даних пов'язаний з деяким джерелом або приймачем даних , здатним отримувати або надавати інформацію . Відповідно, потоки діляться на вхідні - читають дані, і на вихідні - передавальні ( записуючі ) дані .
У Java потоки природним чином представляються об'єктами . Описують їх класи що якраз і складають основну частину пакета java.io. Вони досить різноманітні і відповідають за різну функціональність. Всі класи розділені на дві частини - одні здійснюють введення даних , інші вивід .
Існуючі стандартні класи допомагають вирішити більшість типових завдань. Мінімальною " порцією " інформації є , як відомо , біт, що приймає значення 0 або 1 . Традиційно використовується більш велика одиниця вимірювання байт , що об'єднує 8 біт. Таким чином, значення , представлене 1 байтом , знаходиться в діапазоні від 0 до 28-1 = 255 , або , якщо використовувати знак , від -128 до +127 .
Базові , найбільш універсальні класи дозволяють зчитувати і записувати інформацію саме у вигляді набору байтів. Щоб їх було зручно застосовувати в різних завданнях , java.io містить також класи , що перетворюють будь-які дані в набір байтів. Наприклад , якщо потрібно зберегти результати обчислень - набір значень типу double - у файл , то їх можна спочатку легко перетворити в набір байтів , а потім ці байти записати у файл. Аналогічні дії здійснюються і в ситуації , коли потрібно зберегти об'єкт (тобто його стан ) - перетворення в набір байтів і подальший їх запис в файл. Зрозуміло, що при відновленні даних в обох розглянутих випадках проробляються зворотні дії - спочатку зчитується послідовність байт , а потім вона перетворюється в потрібний формат.
Всі типи поділені на дві групи. Представляють вхідні потоки класи успадковуються
від InputStream : а вихідні OutputStream