
- •Вопрос 1. История языка программирования Java. Достоинства и недостатки языка. Основные особенности. Жизненный цикл программы на Java. Краткая теория: особенности и сферы применения Java
- •Особенности языка Java
- •Плюсы программирования на Java
- •Объектно-ориентированное программирование
- •Java — язык высокого уровня с простым синтаксисом и плавной кривой обучения
- •Стандарт для корпоративных вычислительных систем
- •Безопасность
- •Независимость от платформы («Написать один раз и использовать везде»)
- •Автоматическое управление памятью
- •Многопоточность
- •Стабильность и сообщество
- •Минусы программирования на Java
- •Платное коммерческое использование
- •Низкая производительность
- •Отсутствие нативного дизайна
- •Многословный и сложный код
- •Принципы ооп:
- •Вопрос 2 Примитивные типы Java. Область видимости и время жизни объектов.
- •Область видимости и время жизни переменных.
- •Область видимости и время жизни объектов
- •Вопрос 3. Классы и объекты. Структура класса. Конструкторы класса
- •Конструкторы
- •Вопрос 4. Модификаторы доступа
- •Инкапсуляция
- •Вопрос 5. Ключевое слово this
- •Вопрос 7. Операции. Литералы. Операторы Литералы
- •Операции
- •Переопределение методов
- •Вопрос 9. Полиморфизм. Перегрузка и переопределение.
- •Вопрос 10. Ключевое слово final. В java есть ключевое слово – final. Оно может применяться к классам, методам, переменным (в том числе аргументам методов).
- •Вопрос 11. Абстрактные классы и методы
- •Вопрос 12. Интерфейсы
- •Методы по умолчанию
- •Статические методы
- •Приватные методы
- •Статические вложенные классы
- •Внутренние классы
- •Локальные классы
- •Анонимные классы
- •Вопрос 14. Коллекции объектов в Java. P.S. Взято из лекции
- •Вопрос 15. Итераторы Взято из лекции
- •Вопрос 16. Интерфейсы Comparable, Comparator. Назначение, примеры
- •Вопрос 17. Обработка исключений. Поведение программы при возникновении исключения. Структура и использование блока перехвата исключений.
- •Поведение программы при появлении исключения
- •Обработка исключений. Структура и использование блока перехвата исключений.
- •Вопрос 18. Классы исключительных ситуаций. Блок finally
- •Классы исключительных ситуаций:
- •Блок finally
- •Вопрос 19. Генерация исключительных ситуаций. Создание собственных классов исключительных ситуаций. Исключительные ситуации и наследование Генерация исключительных ситуаций
- •Создание собственных классов исключительных ситуаций
- •Исключительные ситуации и наследование
- •Вопрос 20. Ввод/вывод (I/o) в Java
- •Иерархия InputStream
- •Иерархия Reader
- •Иерархия OutputStream
- •Иерархия Writer
- •Класс RandomAccessFile
- •Класс File
- •Вопрос 21. Сериализация объектов.
Иерархия Reader
Класс Reader служит базовым классом в иерархии. Имеет точно такие же методы, как и класс InputStream.
Класс FileReader имеет два основных конструктора, позволяющих открыть файл:
public FileReader(File file) throws FileNotFoundException
public FileReader(String name) throws FileNotFoundException
Больше никаких "своих" возможностей не имеет, все остальное он наследует от своих предков.
Класс BufferedReader не только обеспечивает эффективный буферизованный ввод данных, но и имеет очень важный метод:
public String readLine() throws IOException - этот метод позволяет читать строку из входного потока. В комбинации с другими классами Java этот метод позволяет организовать ввод с разбиением на слова, вводить числа и т.д.
Обратимся к документации по классу BufferedReader и обратим внимание на его конструкторы. Основной из них это:
public BufferedReader(Reader in)
Т.е. сам по себе этот класс использовать нельзя - только в комбинации с другим классом, например с FileReader для организации чтения из файла
Класс PushbackReader позволяет возвращать обратно в поток прочитанную информацию (или любую другую) так, что при следующем чтении будет читаться эта возвращенная в поток информация. Это не означает, что мы, скажем, модифицируем читаемый файл. Все модификации производятся во внутреннем буфере данного класса. Кстати, размер этого буфера ограничен и задается в конструкторе класса.
Класс InputStreamReader - это вспомогательный класс-переходник от иерархии InputStream к иерархии Reader.
Класс PipedReader по аналогии с PipedInputStream используется для связи программ друг с другом при помощи каналов (pipes).
Класс StringReader обеспечивает работу по чтению информации из строки при помощи средств, предусмотренных иерархией Reader.
Иерархия OutputStream
OutputStream
ByteArrayOutputStream
FileOutputStream
FilterOutputStream
BufferedOutputStream
DataOutputstream
PrintStream
ObjectOutputStream
PipedOutputStream
Принципы построения иерархии OutputStream те же, что и в InputStream , т.е. вся основная функциональность определяется абстрактным базовым классом OutputStream . Рассмотрим основные методы этой иерархии, определенные в классе OutputStream .
public abstract void write(int b) throws IOException - записывает в поток один байт — младший байт числа, заданного параметром b.
public void write(byte[] b) throws IOException - записывает в поток массив байт.
public void write(byte[] b, int off, int len) throws IOException - модификация предыдущего метода, позволяющая задать смещение в массиве и длину записываемой порции.
public void flush() throws IOException - выталкивает из буфера в поток все, что в нем накоплено.
public void close() throws IOException - закрывает поток.
Класс ByteArrayOutputStream позволяет заполнять массив байт операциями вывода в поток.
Класс FileOutputStream - это основной класс для работы с файлами. Имеет такие основные конструкторы:
public FileOutputStream(File file) throws FileNotFoundException
public FileOutputStream(String name) throws FileNotFoundException
public FileOutputStream(String name, boolean append)
throws FileNotFoundException
Смысл конструкторов, кроме, возможно, последнего понятен из их описания. Но имеется несколько нюансов.
При открытии файла на запись, если файл не существует, то он создается.
Если файл существует, то он будет полностью обновлен. Т.е. если открыть и сразу закрыть файл, то реальный файл на диске будет нулевой длины.
Исключением из предыдущего правила является последний из конструкторов. Если в нем в качестве третьего параметра ( append ) указать true , то файл будет дописываться.
Какой-либо дополнительной функциональности по сравнению с базовым классом класс FileOutputStream не добавляет.
Класс BufferedOutputStream служит для организации более эффективного буферизованного вывода в поток.
Класс DataOutputStream содержит много хороших методов, но на практике, чаще всего, бесполезен ввиду того, что работает с кодировкой Unicode.
Класс PrintStream содержит много полезных дополнительных методов. Это методы print и println для всех базовых типов. Наиболее часто используются следующие из этих методов:
public void print(String x);
public void println(String x);
и другие, в принципе, не нужны, т.к. оператор вида println("строка"+число); позволяет вывести и числа. А println("строка"+объект); формирует строку из объекта при помощи метода toString .
Существуют два стандартных (предопределенных) потока вывода типа PrintStream: System.out и System.err. Оба они по умолчанию направляют информацию на консоль, но их можно перенаправить в файлы.
Класс ObjectOutputStream мы будем рассматривать позднее.
Класс PipedOutputStream предназначен для передачи информации между программами через каналы ( pipes ).