ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 12.04.2024
Просмотров: 15
Скачиваний: 0
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
, неизвестную Java. В этом случае запись можешь кэшироваться в буферах ОС".
На каком паттерне основана иерархия потоков ввода/вывода?
Объекты классов Java, которые используются для ввода/вывода, для обеспечения необходимой функциональности наслаиваются друг на друга. Такая модель взаимодействия объектов поддерживается в паттерне «Декоратор». В этом паттерне при создании потока нужно использовать несколько объектов.
Что возвращает перегруженный read. Какаое максимальное значение вернет?
Метод read() используется для чтения символов.
Данный метод возвращает кол-во только что прочитанных символов (целое число от 0 до 65635) или -1, если достиг конца stream(потока).
Он возвращает int, потому что диапазон byte в Java лежит от -127 до 127, а возвращаемое значение метода read() лежит в диапазоне от 0 до 255.
Чтобы получит представление byte в int, в методе read() используется побитовое "И" с числом 255, т.е убираются лидирующие единицы.
Для чего нужен Scanner? Что такое токен в Scanner? Отличие Scanner’a от BufferedReader’a? Есть ли у сканера буфер?
Сканер нужен для считывания данных из источника, который мы для него указываем. Например, из строки, файла или консоли. Далее он распознает эту информацию и обрабатывает нужным образом.
Сканер выполняет поиск токенов во входной строке.
Токен — это серия цифровых или буквенно-цифровых символов, которые заканчиваются разделителем. Стандартными разделителями являются: пробел ' ', символ табуляции '\t', перевода строки '\n' и возврата каретки '\r', который должен иметь тип String.
3.1. BufferedReader работает синхронно, а Scanner — нет. BufferedReader следует использовать, если мы работаем с несколькими потоками.
3.2. BufferedReader имеет значительно большую буферную память, чем Scanner.
3.3. Сканер имеет небольшой буфер (1KB буфер символов или 1024 байта) в отличие от BufferedReader (8KB байтовый буфер или 8192 байта), но этого более чем достаточно.
3.4. BufferedReader немного быстрее по сравнению со сканером, потому что сканер выполняет синтаксический анализ входных данных, а BufferedReader просто читает последовательность символов.
Методы класса File?
createNewFile() - создает
новый файл по пути, который передан в конструкторе;
delete() - удаляет каталог или файл по пути, который передан в конструкторе. Директория или файл должны быть пустыми;
exists() - проверяет, существует ли по указанному в конструкторе пути файл или каталог;
getAbsolutePath() - возвращает абсолютный путь для пути, который передан в конструктор
getName() - возвращает краткое имя файла или каталога
length() - возвращает размер файла в байтах
mkdir() - создает новый каталог и при удачном создании возвращает значение true
Для создания нового файла, во время инициализации объекта File, мы должны предоставить ему имя файла, а затем создать сам новый файл вызовом метода createNewFile().
Как создать файл на компьютере с помощью java?
Создать файл в Java с помощью объекта File можно тремя способами:
1. Передав в объект абсолютный путь
2. Указать только имя файла
3. Указать относительный путь
Как удалить директорию с файлами. Что если в ней есть вложенные директории ?
Чтобы удалить директорию с файлами, сначала необходимо удалить сами файлы в папке, а затем и саму папку.
В чём отличие File от Path?
File - класс, самая старая версия работы с папками и файлами
Его методы возвращают тру/фолс
Path - интерфейс, гораздо новый, его методы выбрасывают исключение в случае проблем.
Что такое сериализация и десериализация.
Сериализация — процесс сохранения состояния объекта в последовательность байт.
Десериализация — процесс восстановления объекта из этих байт.
Любой Java объект можно преобразовать в последовательность байт.
Одно уточнение — чтобы появилась возможность сериализовать объект, он должен наследовать интерфейс Serializable.
Данный интерфейс не имеет каких-либо методов, а
просто дает понять системе, что объект, который реализует его, может быть сериализован.
Для сериализации объектов в поток используется класс ObjectOutputStream. Он записывает данные в поток.
Для десериализации используется класс ObjectInputStream
Какие поля не сериализуются?
При стандартной сериализации, поля с модификатором static не сериализуются. Соответственно, после десериализации это поле значение не поменяет, т.к. static поля принадлежат классу, а не объекту.
Что будет при сериализации объекта у которого есть поле и оно не Serializable?
Код скомпилируется и выкинет исключение: Exception in thread "main" java.io.NotSerializableException!
Если это поле находится в классе, от которого наследуется класс, над которым будет проходить сериализация, то это поле должно быть доступно напрямую или через геттеры и сеттеры классу, над которым будет проходить сериализация. В этом классе придется реализовать пользовательскую сериализацию.
Externalizable vs Serializable?
При записи Serializable класса весь контроль над сериализацией достается JVM.
Интерфейс Externalizable расширяет Serializable и добавляет методы записи и чтения writeExternal и readExternal. Этот интерфейс позволяет реализовать полностью свой механизм сериализации, стандартно запишется только идентификатор класса. У него есть свои плюсы:
1) Производительность
2) Гибкость. Serializable вообще не позволяет управлять процессом, кроме исключения полей или добавление (через свою реализацию методов writeObject/readObject).
3) Безопасность. Иногда необходимо шифрование данных.
Любой класс, имплементирующий интерфейс Externalizable и его наследники, обязан иметь конструктор по умолчанию!
Расширенный алгоритм сериализации (Externalizable) может быть использован, если данные содержат «конфиденциальную» информацию. В этом случае имеет смысл шифровать сериализуемые данные и дешифровать их при десериализации, что требует реализацию собственного алгоритма.
Какие интерфейсы реализует InputStream/ OutputStream/ Reader/ Writer?
InputStream реализует интерфейсы: Closeable и AutoCloseable
OutputStream реализует интерфейсы: Closeable, Flushable, AutoCloseable
Reader реализует интерфейсы: Closeable, AutoCloseable, Readable
Writer реализует интерфейсы: Closeable, Flushable, Appendable, AutoCloseable
На каком паттерне основана иерархия потоков ввода/вывода?
Объекты классов Java, которые используются для ввода/вывода, для обеспечения необходимой функциональности наслаиваются друг на друга. Такая модель взаимодействия объектов поддерживается в паттерне «Декоратор». В этом паттерне при создании потока нужно использовать несколько объектов.
Что возвращает перегруженный read. Какаое максимальное значение вернет?
Метод read() используется для чтения символов.
Данный метод возвращает кол-во только что прочитанных символов (целое число от 0 до 65635) или -1, если достиг конца stream(потока).
Он возвращает int, потому что диапазон byte в Java лежит от -127 до 127, а возвращаемое значение метода read() лежит в диапазоне от 0 до 255.
Чтобы получит представление byte в int, в методе read() используется побитовое "И" с числом 255, т.е убираются лидирующие единицы.
Для чего нужен Scanner? Что такое токен в Scanner? Отличие Scanner’a от BufferedReader’a? Есть ли у сканера буфер?
Сканер нужен для считывания данных из источника, который мы для него указываем. Например, из строки, файла или консоли. Далее он распознает эту информацию и обрабатывает нужным образом.
Сканер выполняет поиск токенов во входной строке.
Токен — это серия цифровых или буквенно-цифровых символов, которые заканчиваются разделителем. Стандартными разделителями являются: пробел ' ', символ табуляции '\t', перевода строки '\n' и возврата каретки '\r', который должен иметь тип String.
3.1. BufferedReader работает синхронно, а Scanner — нет. BufferedReader следует использовать, если мы работаем с несколькими потоками.
3.2. BufferedReader имеет значительно большую буферную память, чем Scanner.
3.3. Сканер имеет небольшой буфер (1KB буфер символов или 1024 байта) в отличие от BufferedReader (8KB байтовый буфер или 8192 байта), но этого более чем достаточно.
3.4. BufferedReader немного быстрее по сравнению со сканером, потому что сканер выполняет синтаксический анализ входных данных, а BufferedReader просто читает последовательность символов.
Методы класса File?
createNewFile() - создает
новый файл по пути, который передан в конструкторе;
delete() - удаляет каталог или файл по пути, который передан в конструкторе. Директория или файл должны быть пустыми;
exists() - проверяет, существует ли по указанному в конструкторе пути файл или каталог;
getAbsolutePath() - возвращает абсолютный путь для пути, который передан в конструктор
getName() - возвращает краткое имя файла или каталога
length() - возвращает размер файла в байтах
mkdir() - создает новый каталог и при удачном создании возвращает значение true
Для создания нового файла, во время инициализации объекта File, мы должны предоставить ему имя файла, а затем создать сам новый файл вызовом метода createNewFile().
Как создать файл на компьютере с помощью java?
Создать файл в Java с помощью объекта File можно тремя способами:
1. Передав в объект абсолютный путь
2. Указать только имя файла
3. Указать относительный путь
Как удалить директорию с файлами. Что если в ней есть вложенные директории ?
Чтобы удалить директорию с файлами, сначала необходимо удалить сами файлы в папке, а затем и саму папку.
В чём отличие File от Path?
File - класс, самая старая версия работы с папками и файлами
Его методы возвращают тру/фолс
Path - интерфейс, гораздо новый, его методы выбрасывают исключение в случае проблем.
Что такое сериализация и десериализация.
Сериализация — процесс сохранения состояния объекта в последовательность байт.
Десериализация — процесс восстановления объекта из этих байт.
Любой Java объект можно преобразовать в последовательность байт.
Одно уточнение — чтобы появилась возможность сериализовать объект, он должен наследовать интерфейс Serializable.
Данный интерфейс не имеет каких-либо методов, а
просто дает понять системе, что объект, который реализует его, может быть сериализован.
Для сериализации объектов в поток используется класс ObjectOutputStream. Он записывает данные в поток.
Для десериализации используется класс ObjectInputStream
Какие поля не сериализуются?
При стандартной сериализации, поля с модификатором static не сериализуются. Соответственно, после десериализации это поле значение не поменяет, т.к. static поля принадлежат классу, а не объекту.
Что будет при сериализации объекта у которого есть поле и оно не Serializable?
Код скомпилируется и выкинет исключение: Exception in thread "main" java.io.NotSerializableException!
Если это поле находится в классе, от которого наследуется класс, над которым будет проходить сериализация, то это поле должно быть доступно напрямую или через геттеры и сеттеры классу, над которым будет проходить сериализация. В этом классе придется реализовать пользовательскую сериализацию.
Externalizable vs Serializable?
При записи Serializable класса весь контроль над сериализацией достается JVM.
Интерфейс Externalizable расширяет Serializable и добавляет методы записи и чтения writeExternal и readExternal. Этот интерфейс позволяет реализовать полностью свой механизм сериализации, стандартно запишется только идентификатор класса. У него есть свои плюсы:
1) Производительность
2) Гибкость. Serializable вообще не позволяет управлять процессом, кроме исключения полей или добавление (через свою реализацию методов writeObject/readObject).
3) Безопасность. Иногда необходимо шифрование данных.
Любой класс, имплементирующий интерфейс Externalizable и его наследники, обязан иметь конструктор по умолчанию!
Расширенный алгоритм сериализации (Externalizable) может быть использован, если данные содержат «конфиденциальную» информацию. В этом случае имеет смысл шифровать сериализуемые данные и дешифровать их при десериализации, что требует реализацию собственного алгоритма.
Какие интерфейсы реализует InputStream/ OutputStream/ Reader/ Writer?
InputStream реализует интерфейсы: Closeable и AutoCloseable
OutputStream реализует интерфейсы: Closeable, Flushable, AutoCloseable
Reader реализует интерфейсы: Closeable, AutoCloseable, Readable
Writer реализует интерфейсы: Closeable, Flushable, Appendable, AutoCloseable