Вопрос: И что должен сделать компилятор?
Вопрос: И что должен сделать компилятор? Ответ: Преобразовать от double к float. Вопрос: А он может это сделать? Ответ: Нет, не может, потому что вы пытаетесь преобразовать от старшего типа к младшему. Компилятор неявно это сделать не может. Можно конечно сделать все явным способом, но существует более простая возможность. Вы можете написать, что 7. 5 – это литерал-слог. Для этого добавляется в этот литерал буковка f (так называемый суффикс, который говорит, что это литерал float).
Вопрос: Чем принципиально отличаются числа int и double? Ответ: Принципиальное отличие int на double. Вопрос: Начну с int. 7 / 0. Какой будет результат? Ответ: Будет ошибка. Это уже виртуальная машина говорит, «дружок! ты делишь на 0! У тебя ошибка в программе. ArithmeticException! Делить на ноль нельзя! »
Обратите внимание, что в этой строчке программа завершается принудительно, потому что нет печати значения. Здесь можно было бы поставить println(“Hello”). Hello у нас не будет. Почему? Программа была принудительно завершена в той строчке, где вы допустили ошибку.
Второй раз делаю тоже самое. Только меняю int на float (или на double). И опять делю 7 на 0. Какой будет результат?
Вот смотрите. Во-первых программа не вылетает. В данном случае деление 7 на 0 – это бесконечность. Так в чем же принципиальное отличие int от double. Смотрите:
Я для чисел double могу проверить является оно бесконечностью или нет. Я могу в переменную double сразу положить значение бесконечности. В математике же вы можете «a» присвоить бесконечность? Да. В нашем проекте я хочу переменной «c» присвоить бесконечность.
NaN означает «Not a Number» - Не число. Т. е. здесь есть специально готовые значения, обратите внимание. Обычный double вам не даст этого, потому что это простой тип данных. А Double – это класс-обертка. Я делю 7 на бесконечность. Какой будет результат? Ответ: Любое число, деленное на бесконечность равно нулю. Поэтому ответ 0. Вопрос: Что еще отсюда следует сказать по поводу float и double? Ответ: Вы не можете для double выполнять сравнение, например, a == b. Нельзя писать проверку двух чисел с плавающей точкой на точное равно. Ни в коем случае! Поэтому здесь надо быть аккуратным.
Операции языка Java. Вот мы создали переменные, мы знаем, что есть разные типы данных. У них есть разные возможности. Возникает вопрос: А что с ними можно еще делать, кроме как, «+-/*»? Ответ: Вот все операции ЯП Java.
Есть такая операция, которая обозначается значком «%». Это остаток от деления. Я беру 7 % 2. Остаток от деления 1. Помните, дети в детском саде учатся делить в столбик. И при делении получают остаток. Вот это и есть остаток от деления. Это идеальный способ, как вы можете проверить четное или нечетное число. Если остаток от деления не 0, то число у нас получается нечетное, а если бы было 8, т. е. четное число, то остаток от деления был бы 0. В ЯП остаток от деления работает с float, и с double.
И ещё одно важное отличие. Сейчас мы поговорим про операции сдвига, называются они SHIFT. Т. е. я могу биты в числе двигать влево, а могу вправо. Вот у меня есть четыре бита: 1100.
Я могу биты двигать влево. Что это означает? Тот бит, который был старшим, он выходит за границу и пропадает. А отсюда какие биты выезжают? Нули. Т. е. я двигаю влево. Старшие биты пропадают, а выезжают младшие нули. А есть операция сдвига вправо. А теперь уже наоборот. Те, которые справа они пропадают. Я сдвинул за границу, соответственно бит пропадет. А с другой стороны кто-то выезжает, если я двигаю вправо.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|