Default Flashcards

1
Q

Input\output streams in Java.
Два типа стримов?
Buffered streams.

A

Стрим - абстракция над потоком(последовательностью) данных.

Input\Output стримы нужны для того, чтобы читать\писать информацию из\в различные источники (файл на диске, сетевой ресурс и тд).

Два типа стримов: char или byte.
byte stream - более низкоуровневый тип, где работа происходит непосредственно с потоком байтов.
char - работа происходит с чарами в 16-битной кодировке Unicode (UTF).

В некоторых случаев удобнее использовать буфферезированые потоки, где данные вычитываются\записываются не целиком, а с помощью буффера определенного размера.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Дефолтная кодировка в джаве?

A

UTF-8

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Input streams.
Базовый класс для чтения и его основной перегруженный метод? Что этот метод возвращает? Блокирует ли он выполнение программы и надо ли что-то делать?
Основные потомки базового класса?
Как обычно вычитываются данные из сорса?

Основной класс для работы с байтовыми стримами и его методы? Его подклассы?

Буфферизированные варианты для байтовых и чаровых стримов?

Что происходит при нажатии enter в консоле с вводом данных?

A

Базовый класс для чаровых стримов - java.io.Reader. Его основной метод - read(), который существует в нескольких перегруженных версиях. На вход принимает или ничего, или например массив, куда надо читать, а возвращает int - или числовое отображение прочтенного чара, или количество прочтенных чаров. Если данные в сорсе закончились, то возвращается “-1”.
Метод блокирует выполнение программы, поэтому нужно использовать close() после работы со стримом. Лучше всего исопльзовать try-with-resources.
Один из способов вычитывания - вычитывать пока не вернется -1, что будет означать, что данных больше нет.
Основные потомки - это версии для разных сорсов:
FileReader, StringReader, CharArrayReader.

Основной класс для байтовых стримов java.io.InputStream. Основные подклассы: FileInputStream, ByteArrayInputStream, AudioInputStream.
Основной метод - read(), с перегруженными вариантами для того, чтобы контролировать количество байтов, которые нужно прочитать.

Для буфферизации можно использовать BufferedReader и BufferedInputStream, которые на вход конструктора принимают другой стрим и возвращают его буфферизированную версию. Опционально можно задать размер буфера.

При нажатии enter в консоли вычитывает не только то, что было введено, но и \n - символ окончания строки. Это нужно учитывать при работе с вводом.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Что может содержать интерфейс?

A

PADS

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q
Что будет если при инстанциировании параметризованного класса не указать тип?
ArrayList list = new ArrayList();
A

Получится объект “сырого типа”, то есть в коллекции будут храниться объекты типа Object.
Аналогично ArrayList list = new ArrayList<>();

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Каков синтаксис дженерик метода?

A
class Box {
        private T item;

// тут используется параметр Т, который определен на уровне класса.

   public T returnT(T t) {  
        return t;
    }

// а тут в методе используется свой новый тип, поэтому его надо указывать в сигнатуре метода.

    public <u> U returnU(U u) {
        return u;
    }
}</u>
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Как задать ограничение на классы, которые могут использоваться в качестве типа у дженерика?
Что такое type bounds?
Есть ли какое-то ограничение в у типа T в записи: class Storage?
Можно ли задать несколько ограничений?

A

Для ограничения можно использовать type bound.
Например можно ограничить классы, с которыми будет работать коллекция только числами:
ArrayList list;

Bound есть всегда, если ничего не указано, то подразумевается .
class Storage эквивалентно 
class Storage

Можно задавать несколько ограничений:
class Storage
При этом, так как в джаве запрещено множественное наследование, класс может быть только один (в данном случае А), остальное - это интерфейсы. Класс должен всегда идти первым в списке, другой порядок приведет к compile-time error.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Что будет если определить енам как: public abstract class Enum implements Comparable

вместо:

public abstract class Enum> implements Comparable

A

-

How well did you know this?
1
Not at all
2
3
4
5
Perfectly