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

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

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

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

Добавлен: 04.12.2023

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

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

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

&& - это укороченный вариант &. Отличия в том, что в укороченной версии (&&), если первый операнд false, то второй даже не проверяется, сразу ясно что выражения false. Так же и с || и |, в укороченной версии (||) если первый операнд true, то второй даже не рассматривается. Это довольно удобно, если например имеем

1

func1() & func2()

в этом случае вызываются обе функции, даже если первая false, а это уже значит результат ясен, все выражение false, а func2() все равно проверяется (а это лишние затраты). А вот так

2

func1() && func2()

если первое выражение false, то func2() даже не вызывается для проверки, т.к результат уже ясен.

(a & b) - будет проверено и a, и b

(a | b) - будет проверено и а, и b

(a && b) - если а=false, то b проверено не будет

(a || b) - если а=true, то b проверено не будет

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

if/else

switch case

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

(String securityAnswer = man.getAge() >= 18 ? "Все в порядке, проходите!" : "Этот фильм не подходит)

Можно ли в switch case использовать String, Enum?

да

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

while – цикл с предусловием.

do while – цикл с постусловием. выполниться один раз, а потом проверит условие

for – цикл со счетчиком

foreach – цикл для перебора коллекций и элементов массива

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

continue – continue используется для выхода из текущего выполнения (итерации) и передачи управления обратно в начало цикла.

при вызове этого оператора цикл прекращает текущую итерацию, выполняет <действие после итерации> и проверяет условие цикла. Если проверка вернула true, то переходит к следующей итерации, а иначе — заканчивается.

break – Оператор применяется для прерывания текущей итерации . С его помощью происходит выход из блока фигурных скобок оператора цикла либо оператора switch с дальнейшей передачей управления следующему оператору. Если задействуются вложенные операторы, break обеспечивает выход из самого внутреннего оператора.

?Почему не рек операторы break и continue (c метками?)

неоправданно усложняют текст программы омендуется их использовать?

?)Если в case не поставить break что будет?

Если не использовать оператор break, то, сразу после того, как выполнится один блок кода, программа переключится на выполнения следующего case,


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

Рекурсия – вызов функции самой себя.

+ некоторые алгоритмы проще, короче и понятнее написать через рекурсию, чем через циклы

- скорость работы, нужно больше памяти

основные принципы рекурсии

1)Рекурсия должна заканчиваться

2) Рекурсия должна двигаться(иметь шаг)

  1. Почему 2.0 - 1.1 != 0.9?

Для вещественных чисел нельзя использовать проверку на

равенство при помощи ==

• Это связано с ошибками округления – компьютер имеет

ограниченную точность при работе с вещественными

числами

• System.out.println(2.0 - 1.1);

// 0.8999999999999999

• System.out.println(2.0 - 1.1 == 0.9);

// false

Проверка на равенство вещ-х чисел

• Поэтому проверку на равенство нужно заменять на

проверку, что число лежит в некотором небольшом

диапазоне

• ???? = ????

• ???? − ???? = 0

• Теперь позволяем разности отклоняться от 0 в диапазоне

от −???? до ????

• −???? ≤ ???? − ???? ≤ ????

• ???? − ???? ≤ ????

Проверка на равенство вещ-х чисел

• ???? − ???? ≤ ????

• В коде:

• double epsilon = 1.0e-10;

if (Math.abs(a - b) <= epsilon) {

// a примерно равен b

}

• Команда Math.abs(x) выдает модуль вещественного числа

• В качестве epsilon можно брать любое маленькое

положительное число

  1. Перевод в двоичную систему?

Integer.toBinaryString(100) – перевод в двоичную систему 100 Результат: 1100100

Integer.parseInt("1100110",2) – перевод в десятичную систему 1100110 Результат: 102

  1. char + short = type?

Получим тип int

  1. BigInteger и BigDecimal?

BigInteger – аналог целочисленных значений произвольной длины, у которого нет ограничения в 64 бит как у long. Существует множество методов.

BigDecimal – тоже самое что и BigInteger, только с вещественными числами. В банковской сфере используеться BigDecimal вместо double, т.к обладает большими настройками.

  1. byte a = 1; byte b = 2; byte c = a + b; Будут ли какие-то проблемы?

Компилятор будет выдавать ошибку.Т.к. по умолчанию тип будет int, а он не входит в byte, нужно явное преобразование типов

  1. Что будет, если попытаться присвоить нулевую обертку (ссылка null) обратно в примитив?

Будет выброшено исключение NullPointerException, не может примитив иметь нулевую ссылку



  1. Integer a = 100; Integer b = 100; a == b ? Почему?

Потому что создастся один объект в pool примитивов, и у них будет одна и таже ссылка.

  1. Что такое null?

он служил, чтобы обозначить отсутствие чего-либо, например, пользователя, ресурса и т. п.

- Что такое null?

любые ссылочные переменные в Java по умолчанию будут равны null

каждый примитив имеет значение по умолчанию, например, у int это 0, у boolean это false

Что будет, если попытаться присвоить нулевую обертку (ссылка null) обратно в примитив? –

компилятор не отреагирует, но мы будем вознаграждены null pointer exception во время выполнения. Это происходит из-за авто упаковки (autoboxing)

Integer a = 100; Integer b = 100; a == b ? Почему?

Целые числа между -128 и 127 кэшируются (целые числа одного и того же значения ссылаются на один и тот же Object)

- Размер элемента массива –

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

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

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

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

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

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

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

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

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

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

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

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

  • Что такое инкремент и декремент?

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

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

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

  • Что такое continue и break?

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