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

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

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