Файл: Все примитивные типы и их размеры.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 18.10.2024

Просмотров: 3

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

  1. Все примитивные типы и их размеры

Целочисленные - byte, short, int, long – 8 бит, 16 бит, 32 бит, 64 бит

Вещественные – float, double – 32 и 64 бит

Булевые – true, false – 8 бит в массиве, 32 бит в остальных случаях

Строковыей – char – 16 бит


  1. Какая размерность у boolean?

  2. Что такое char? Почему над ним можно выполнять арифметические операции?

Char – представление символов в виде целочисленного значения. Каждому символу из из таблицы utf-16 соответствует целое число.

Целые числа можно слагать, вычитать и тд.


  1. Какие есть виды приведения типов? Что такое явные и неявные приведения, с чем связано их наличие?

Явное и неявное. Явное – с указанием в виде (type). В java некоторые типы данных приводятся к другим автоматически, а некоторые нужно приводить явно.


  1. Какие классы-обертки знаешь?


Byte, Short, Integer, Long, Double, Float, Character, String


  1. Расскажи про unboxing, autoboxing в обертках

Значения переводятся из примитивов в обертки и наоборот без явного приведения


  1. Расскажи про pool строк и pool примитивов

https://topjava.ru/blog/rukovodstvo-po-string-pool-v-java

Экземпляр класса String хранится в памяти, именуемой куча (heap), но есть некоторые нюансы. Если строка, созданная при помощи конструктора хранится непосредственно в куче, то строка, созданная как строковый литерал, уже хранится в специальном месте кучи — в так называемом пуле строк (string pool). В нем сохраняются исключительно уникальные значения строковых литералов, а не все строки подряд. Процесс помещения строк в пул называется интернирование (от англ. interning).

Вручную можно интернировать методом intern().
Если значение переменной не известно на этапе компиляции, то оно добавляется в heap.

При создании через конструктор, строка добавляется не в pool, а в кучу.

Intern не рекомендуется. Рекомендуется дедупликация - переприсваивание ссылок на поля значений value


  1. Как добавить String’у в pool строк?

  2. Разница между String, StringBuilder и StringBuffer?

String – неизменяемая строка.

StringBuffer — потокобезопасная изменяемая строка.

StringBuilder – изменяемая строка с высокой производительностью, но без синхронизации.


  1. Что такое массив и какие на нём есть ограничения?

  2. Какая максимальная длина массива?

Максимальное количество вложенных массивов – 255

Макс кол элементов – положительная половина int-а


  1. Что такое метод, возвращаемое значение, аргументы метода?



  1. Какие логические операции знаешь? Таблица истинности операторов.

& - Логическое AND (И)

&& Сокращённое AND

| Логическое OR (ИЛИ)

|| Сокращённое OR

^ Логическое XOR (исключающее OR (ИЛИ))

! Логическое унарное NOT (НЕ)

&= AND с присваиванием

|= OR с присваиванием

^= XOR с присваиванием

== Равно

!= Не равно

?: Тернарный (троичный) условный оператор


  1. Какие есть условные операторы?

Условные операторы - if-else, switch-case, тернарный оператор


  1. Какие есть циклы в Java? Чем отличаются друг от друга?

For I и for each. В for each увеличение только на единицу.

  1. Что такое continue и break?

Пропуск хода, выход из цикла

  1. Что такое рекурсия? Недостатки и преимущества?

Недостаток - скорость работы рекурсивного кода.

N.B. Другой недостаток - требования к размеру стека
Преимущество - некоторые алгоритмы многократно проще, короче и понятнее записать в рекурсивном виде, чем через циклы.
P.S. Любой циклический алгоритм можно записать в рекурсивном виде, а любой рекурсивный алгоритм можно записать с помощью комбинации цикла и стека.

Использование методом самого себя. 2 обязательных атрибута рекурсии – стоп-фактор и уменьшение входного параметра на значение.




  1. BigInteger и BigDecimal

Для создания больших чисел, и с гарантией точности.

  1. Почему 0.1 + 0.8 != 0.9 ?

Операции проводятся в двоичном виде, поэтому имеют место погрешности

  1. Пул примитивов

В Java есть пул(pool) целых чисел в промежутке [-128;127]

При new – создается новый объект, который не включается в pool;


  1. Переведи число X (любое) из десятичной в двоичную, и число Y (любое) из двоичной в десятичную