- •Понятие потока данных в java. Виды потоков:
- •Общая схема записи данных в поток:
- •Общая схема чтения данных из потока:
- •Байтовый поток :свойства, связь потока с файлом, чтение, запись закрытие:
- •Потоки символов: свойства, связь потока с файлом, чтение, запись, закрытие:
- •Потоки строк: свойства, связь потока с файлом, чтение, запись, закрытие:
- •Исключения при работе с потоками:
- •Понятие рекурсии, рекурсивное вычисление факториала:
- •Понятие рекурсии, рекурсивное вычисление суммы элементов массива:
- •Понятие рекурсии, рекурсивное вычисление максимального элемента массива:
- •Формулировка задачи о ханойских башнях:
- •Применение рекурсии при определении связного списка:
- •Понятие списка. Объявление элемента списка:
- •Структура объявления двусвязного списка:
- •Типовые операции для односвязных списков:
- •Кольцевой и двусвязный списки: отличия от односвязного списка:
- •Порядок добавления элемента в односвязный список:
- •Основные типы коллекций, имеющиеся в Java Collection Framework:
- •Составные части jcf и их назначение:
- •Назначение интерфейсов и алгоритмов jcf:
- •Примеры (двух) интерфейсов и (двух) реализаций: сходства и различия:
- •Преимущества, получаемые от применения jcf в программах:
- •Коллекции: списки – основные методы интерфейса List:
- •Коллекции: множества – основные элементы интерфейса Set:
- •Выполнение стандартных операций теории множеств:
- •Списки и множества: сходства и различия:
- •Цикл for-each и его применение в коллекциях:
- •Математическая идея, представленная элементом Map:
- •Вопрос 29. Сравнительный анализ реализаций ArrayList и LinkedList.
- •Вопрос 30. Параметры по которым сравнивают реализации коллекций.
- •Вопрос 31. Понятие и назначение итератора
- •Вопрос 33. Comparable и Comparator
- •Вопрос 34. Сортировка со стандартным и нестандартным отношением порядка.
- •Вопрос 35. Вопрос 36. Вопрос 37. Вопрос 38 Поиск элемента в коллекции. Двоичный и прямой поиск. Способ идентификации ситуации «Элемент не найден».
- •Вопрос 39. Графический интерфейс пользователя. Составные элементы фрейма.
- •Вопрос 40. Библиотеки Java, поддерживающие графический интерфейс.
- •Вопрос 41. Компонент и контейнер.
- •Вопрос 42. Jframe — в иерархии объектов графики.
- •Ответы к экзамену по программированию часть 5 (вопр. 57-69)
- •События мышки. Общая схема обработки событий мышки:
- •Методы интерфейса MouseListener и их назначение:
- •Методы интерфейса MouseMotionListener:
- •Методы класса MouseEvent. Получение координат события:
- •Управляющие элементы графического интерфейса – внешний вид и назначение:
- •Кнопка. Состояния кнопки. События кнопки, их обработка и идентификация:
- •Структура программы, имеющей интерфейс с двумя кнопками:
- •Элементы интерфейса «Условие» («флажок») и его конструкторы:
- •События элемента «флажок» и их обработка.
- •Структура программы с интерфейсом, содержащим два элемента «условие»:
- •67. Элемент интерфейса «радиокнопка» и его конструкторы:
- •Группировка радиокнопок и задание начального состояния в группе.
- •События элемента «радиокнопка» и их обработка.
Понятие потока данных в java. Виды потоков:
Поток данных - перемещение данных от уст-ва в программу и наоборот, независимо от природы устройства. Поток это абстракция, которая или производит, или потребляет информацию. Поток связывается с физическим уст-вом с помощью системы ввода/вывода java.
Существуют: байтовые (двоичные данные, может применяться для передачи латинских символов (сырые данные)), символьные потоки (основан на потоке символов) и потоки строк (элемент-строка символов, основан на потоке символов).
Общая схема записи данных в поток:
создать и открыть поток ( stream )
while (есть данные для записи) {
записать ( write) данные в поток
}
закрыть ( close) поток
Пример:
FileInputStreamfi=null;
FileOutputStreamfo=null;
try{
fi=new FileInputStream("f-out.byt");
fo=new FileOutputStream("f-out2.byt");
while((d=fi.read())!=-1){b=(byte)d;
System.out.printf("%02x\n",b);
b=((byte)(b^0x54));
System.out.printf("%02x\n",b);
fo.write(b);
}
}
catch (IOException e){System.out.println("error");}
finally{if(fo!=null){System.out.println(" fo was opened");
fo.close();а
Общая схема чтения данных из потока:
создать и открыть поток ( stream )
while (в потоке есть данные) {
прочитать (read) данные из потока
}
закрыть( close) поток
FileInputStream fi=null;
FileOutputStreamfo=null;
try{
fi=new FileInputStream("f-out.byt");
fo=new FileOutputStream("f-out2.byt");
while((d=fi.read())!=-1){b=(byte)d;
System.out.printf("%02x\n",b);
b=((byte)(b^0x54));
System.out.printf("%02x\n",b);
fo.write(b);
}
}
catch (IOException e){System.out.println("error");}
finally{if(fo!=null){System.out.println(" fo was opened");
fo.close();а
Байтовый поток :свойства, связь потока с файлом, чтение, запись закрытие:
Байтовые потоки предоставляют удобные средства для обработки ввода и вывода байтов. Определяются в двух иерархиях классов. Наверху этой иерархии – 2 абстрактных класса: InputStream и OutputStream. Абстрактных классы InputStream и OutputStream определяют несколько ключевых методов, которые реализуются другими поточными классами. Два наиболее важных – read() и write(), которые соответсвенно, читают и записывают байты данных.
Методы абстрактного класса – потока байтовInputStream
close() закрывает поток и освобождает ресурсы, ранее полученные для потока.
mark(intreadlimit) отмечает текущую позицию в потоке, которую можно будет использовать до тех пор, пока из потока не будет прочитано readlimit байтов.
markSupported() проверяет, допустимы ли методы mark и reset. Возвращает true/false.
read() читает очередной байт и возвращает его как правый байт int, или -1, если уже нет доступных байтов.
read(byte[] b) читает порцию байтов, заполняя массив b. Возвращает количество реально прочтенных байтов, если b.length==0, ничего не читает и возвращает 0, если нет доступных байтов, возвращает -1.
read(byte[] b, intoff, intlen) читает len байтов в массив b со смещением от начала массива off. Возвращает количество реально прочтенных байтов. Если len==0, ничего не читает и возвращает 0, если нет доступных байтов, возвращает -1.
reset() перемещается по потоку в обратном направлении до отметки
skip(long n) пытается пропустить во входном потоке n байтов без чтения.
Методы абстрактного класса – потока байтов OutputStream.
Все методы этого класса имеют тип void и создают исключение IOException в случае ошибки.
write(int b) пишет правый байт из int в поток. Левые байты int не используются.
write(byte b[]) записывает в выходной поток массив байтов b.
write(byte b[], intoff, intlen) записывает в поток len байтов из b, начиная с элемента b[off].
flush() завершает операцию вывода, сохраняя данные из внутреннего буфера.
close() закрывает выходной поток.
FileInputStream – поток для ввода байтов, связанный с
файлом
FileOutputStream – поток для вывода байтов, связанный
сфайлом
FileInputStream fi=null;
FileOutputStreamfo=null;
fi=new FileInputStream("f-out.byt");
fo=new FileOutputStream("f-out2.byt");