hubert
41 уровень

Уровень 10: план уровня и доп. материалы

Пост из группы Архив info.javarush.ru
3745 участников
План уровня:
  • Приведение примитивных типов: расширение и сужение.
  • Примитивные типы
  • Преобразование типов. Расширение и сужение типов
  • Особенности преобразования типов
  • instanceof
  • Литералы

Курс Java Что еще можно посмотреть на досуге: Расширение и сужение типов в Java Модификатор final Маленькие хитрости в Java http://study-java.ru/uroki-java/urok-7-preobrazovanie-tipov-v-java/#chartoint Почитать про преобразование типов
Нашли классную ссылку к материалу данной темы? Добавьте ее сюда в виде комментария. Возможно, именно Ваша ссылка поможет другому человеку стать программистом и улучшить свою жизнь!

Вернуться к плану обучения
Вернуться к обучению
java онлайн
на JavaRush
Комментарии (61)
  • популярные
  • новые
  • старые
Для того, что бы оставить комментарий вы должны авторизоваться
Paulus12317 уровень
27 сентября 2016, 19:06
мне понравился этот ресурс с табличками
pr0java.blogspot.com/2015/12/java.html
Natalya Shipova14 уровень, Москва
16 июля, 17:24
Спасибо! Отличная статья!
Nullptr35 уровень, Москва
13 сентября 2016, 01:23
Спасибо за ссылки. Про рыбу и селедку порадовало. :)
dioxide17 уровень
11 августа 2016, 13:31
А зачем на boolean выделять целый байт?
Yuri_050411 уровень
2 октября 2016, 10:42
Потому что в памяти все хранится в байтах, поэтому создавать примитивы меньше байта не имеет смысла.
snuk15 уровень, Москва
9 марта 2016, 21:26
По двоичному коду доступным языком-здесь. Конвертер двоичногл кода в десятичный и обратно(надо потестировать, разбираясь в двоичке)-тут. Непонятный по статьям момент сужения чара к байту и наоборот — тут.
mrANDERSON26 уровень, Харьков
17 января 2016, 18:58
Уважаемые разработчики курса, все-так int — это от -2(в 31) до 2(в 31) — 1, а long — -2(в 63)…2(в 63)-1.
Т.е. 2*10(в 9) это 2_000_000, int же = 2147483647 (см. Integer.MAX_VALUE); тоже и с long.
Если я не прав — поправьте кто-нибудь, пожалуйста!
lichMax40 уровень, Санкт-Петербург
26 февраля 2017, 17:10
10 в 9-ой степени — это два миллиарда, 9 нулей получается. А не шесть, как у вас. так что всё верно у них.
mrANDERSON26 уровень, Харьков
11 января 2016, 19:46
Манти́сса пишется с двумя «сс» :)
mrANDERSON26 уровень, Харьков
16 января 2016, 15:48
Это 2я лекция, если что)
lexel39 уровень, Passau
4 января 2016, 14:10
Не могу понять как происходит механизм преобразования например с int в byte.
int a = 250;
byte b = (byte) a;
System.out.println(b);

результат будет -6.
Каким образом 250 преобразовалось в -6?
desiq34 уровень, Санкт-Петербург
5 января 2016, 12:29
int a = 250; < — 11111010
byte b = (byte) a; < — при приведении получаем дополнительный код со старшим битом 1 т.е отрицательное число — вычитаем 1 = 11111001 и инвертируем, получаем 00000110 = 6
System.out.println(b); < — -6
lexel39 уровень, Passau
6 января 2016, 11:26
Каким образом происходит это приведение? Из лекций я знаю что в byte может быть число входящее в диапазон -128… 127. То число 250 в этот диапазон не попадает. И его нужно как-то уменьшить до этого диапазона.
Мне видно не хватает знаний по поводу операций с двоичным кодом.
int a = 250; < — 11111010
как перевести 250 в двоичный код я еще могу понять
128 64 32 16 8 4 2 1
 1   1  1  1 1 0 1 1

Т.е. если сложить все суммы, под которыми стоят единички, то получится 250. Соответственно это и будет в двоичной системе.
а вот дальше я не понимаю
при приведении получаем дополнительный код со старшим битом 1 т.е отрицательное число — вычитаем 1

если долго писать то можете скинуть ссылку где почитать? А то я даже не знаю что искать в Google
desiq34 уровень, Санкт-Петербург
6 января 2016, 11:34
почитай про перевод отрицательных чисел в двоичную систему(прямой и дополнительный код) вот тут например
lexel39 уровень, Passau
6 января 2016, 12:00
Я нашел формулу, используя которую можно узнать сколько будет int в byte без перевода в двоичный код.
Диапазон byte -128...127
Таким образом весь диапазон это 256 ( 128 + 127 и плюс 1 (ноль тоже учитывается)
И теперь чтобы перевести любое int число, которое выходит за рамки -128...127 нужно просто отнимать от этого числа 256 пока оно не войдет в этот диапазон.
Пример:
Для примера возьмем число 500
500 — 256 = 244
244 — 256 = -12
(int) 500 = (byte) -12
Но про двоичный код так же стоит почитать и разобраться.
Вот еще полезная на мой взгляд ссылка
Nara31 уровень
22 октября 2015, 17:56
Ребята, помогите понять следующий момент. «Переменной Object можно присвоить ссылку любого типа (расширение типа). Но чтобы выполнить обратное присваивание (сужение типа) приходится явно указывать операцию приведения».

Почему так? Ведь при наследовании дочерний класс получает поля и методы родительского + определяет свои. Разве дочерний класс не шире родительского? Следуя этой логике – всё должно быть наоборот: присваивание родительского объекта дочернему является расширением, а дочернего родительскому — сужение. Где я не так понял?
South16 уровень
30 ноября 2015, 12:20
При наследовании мы расширяем родительский класс полями и методами дочернего класса. Но именно из-за этого дочерний класс становится более специализированным, более узким и более конкретным, чем родительский.

Вспомним зоологию — родительский класс — Млекопитающие. Это животные, которые вскармливают детенышей молоком и покрыто шерстью (кто-то в большей степени, кто-то в меньшей). Дочерним классом к нему являются Хищники. Добавляются методы: «Питаются мясом», «Охотятся». С одной стороны Хищники расширяют Млекопитающих этими методами, но с другой стороны — это более узкая группа по отношению к Млекопитающим.
Grimarr17 уровень, Санкт-Петербург
22 октября 2015, 08:43
study-java.ru/uroki-java/urok-7-preobrazovanie-tipov-v-java/#chartoint вот тут отлично расписаны примеры преобразования типов
South16 уровень
28 августа 2015, 09:00
В таблице из лекции указано, что тип boolean занимает 1 байт памяти. Но это же не так, он занимает 4 байта (32 бита) памяти, как и int.
Исправьте что-ли.
Bolja15 уровень, Москва
30 сентября 2015, 21:02
Оба варианта верны. 4 байта boolean занимает в переменных, 1 байт — в массивах.
South16 уровень
1 октября 2015, 12:16
Спасибо! не знала насчёт размера boolean в массивах.