в игре Sid Meier's Civilization существовал баг, из-за которого Махатма Ганди, который никого не должен обижать, на определённом этапе игры становился крайне агрессивным и активно использовал ядерные боеголовки. Эта ошибка случилась из-за явного привидения типов, когда число становилось больше настолько, что вместо максимального уровня доброты, менялось на максимальный уровень злости.
Хотелось бы отметить, что при привышении значения переменной byte, мы не еще дальше уходим, а начинаем второй круг от -128... тоесть byte x=256 покажет нам 0. Это число и есть диапазон между -128 и 127. Следовательно 512 покажет нам также нулевое значение)
всеравно надо всех смотреть, один скажет это, второй дополнит, третий закрепит примером, четвертый напомнит, пятый спросит "а знаете ли вы", шестой скажет ну что будем кодить двоичным кодом?
Реально такого учителя просто не найти, хочется слушать и слушать) Я очень рад, что ты не забросил канал и есть ещё много учебного материала, как все окучим тут перейдем на продвинутую Java. Конечно хотелось бы твоего мнения в каком порядке учить материал или может какие книги толковые, понимаю много всего, но хочется услышать твое мнение.
Возможно, далее в роликах будет ответ (пока еще не дошел). Правильно ли я понимаю, что по сути можно без потерь переходить на старший тип: byte -> short -> int -> long -> double ?
Можно я вас поправлю на первой минуте с byte не корректный трактовка в виде значения .... Это важный момент - Минимальная величина равна -128 (-27). Максимальное значение равно 127 (включительно) (27-1).
Извини,что вопрос не по теме. Почему в Java сделано так,что переменные класса мы может инициализировать по умолчанию,а локальные переменные нет? Понятно,что будет ошибка компиляции,но за чем вообще так сделано?
Интересный вопрос. Мне кажется, что причины были идеологические. Если бы локальные переменные инициализировались по умолчанию, то никогда бы не возникала ошибка "Variable might not have been initialized"("Переменная может быть не инициализирована"). Благодаря этой ошибке мы можем увидеть, что мы где-то забыли инициализировать переменную. Исправив такую ошибку, мы можем рассчитывать на то, что все локальные переменные в нашей программе инициализированы. Если бы локальные переменные инициализировались по умолчанию, то мог бы возникнуть такой сценарий: (очень упрощенно) int x; // забыли инициализировать int y = 1; int z = 1 / x; // получили ошибку. Деление на 0. Так что инициализация локальных переменных по умолчанию могла бы приводить к неожиданным результатам, что плохо.
12:30 Помогите плиз - не понял почему мы не можем из double сделать округление и превратить в Int. 123 это же подходит под int. Почему java заставляет нас делать приведение в long ?
Потому что метод Math.round(); возвращает long. Можешь посмотреть как он работает под капотом в IntelliJ IDEA, нажав на данный метод через ctrl + клик мыши по методу.
Неожиданные вещи это задачи джавараша на эту тему: Правильно расставь операторы приведения типа, чтобы получился ответ: d > 0. int a = 0; int b = (byte) a + 46; byte c = (byte) (a*b); double f = (char) 1234.15; long d = (short) (a + f / c + b);
@@siberian_arg та я бросал , потом заново всё проходил , кумарят практические задания, не задачи , а ребусы блин какие то, что бы решить задачи надо очень много гуглить, возможно это влияет на то что лучше запомнишь, а возможно это сделано для того что бы как можно дольше находился на курсе и платил соответственно
Блин, да это логическая жопа, которая не имеет никакого отношения к логике самих примитивных переменных, как таковых. В задаче, как бы говорится, что операторы расставлены неправильно == расставь их правильно. Я честно сидел наверное часа 2, чёто думал, расставлял, пытался чёто понять, а что же тут неправильного с операторами, что они выдают минус, а правильная расстановка должна давать плюс. Как жеж расставить? Вот жеж как сложно! Где-то че-то я не понимаю еще! Как жеж мать его должно быть правильно? Мозг перегрелся, я пошел покемарить чуток и о чудо приснилось мне решение))) Короче тут не столько важно, что вообще понаписано в коде и что, где расставлено. Тут важно только одно то, что код выдает минус 1. Это и есть самая главная и основная фишка задачи. Больше ничего не надо. Вообще! Вот абсолютно пофиг, что, где и как тут расставлено. d == Минус 1!!! Вторая фишка, то что java (лично я вообще не понимаю этот прикол) перескакивает на противоположный конец значений при пересечении границы диапазона допустимых значений переменных. То есть, например, byte из минус 129 внезапно становится плюс 127 вместо того, что бы логически вывалиться в ошибку. Ход мысли уже понятен? И только в самом конце вот этой логической жопы кроется реально логическое решение. Диапазоны CHAR == 0 - 65636. Если char вывалить в минус 1...... правильно! Будет + 65635. Собственно это всё. Необходимо пометь всего один оператор в последней строчке кода: long d = (char) (a + f / c + b);
Как всегда лайк! У меня вопрос: на каком этапе изучения Java можно приступать к изучению программирования под Android? Необходимо Java изучить от A до Я? Спасибо!
Н-р когда на вход приходят целые числа, а нужно вернуть вещественное как результат деления одного на другое тогда: return (double) a / b; где int a, int b.
Отличные уроки, досмотрел до 30-го практически за один заход, пока что все более менее понятно, только не понятно как это все применять на практике? Ведь там мы не будем создавать абстрактных Person, Animal or Dogs... P. S. Явное.... приведение... типов... =))) А я все ждал когда же вы заметите?;)
@@dmitry.gashko на практике практикуюсь, делаю задания типа сортировок массивов и смежные учебные задания. Даже пробую делать свое туристическое приложение с гугл картами. Но пока не знаю как именно нужно ПРАВИЛЬНО использовать основные принципы ООП и много с того что показал автор.
Делаю для обучения список задач на домашнее задание (слизываю с разных ресурсов). Могу вам выслать для тренировки. З.Ы. К этим урокам, непосредственно, эти задания никакого отношения не имеют.
@@korumstar9989 был бы рад взглянуть на ваш список для тренировки. Буду благодарен если вышлете сюда - dimon.develop@gmail.com или сюда - facebook.com/dimon.develop.
Я так и не поняла, почему нам нужно конвертировать инт в лонг, когда мы уже создали переменную типа лонг и там именно лонг и должен храниться, нет разве?
В том, что вы описали нет никакого толка. Но если вы знаете, что в переменной типа int будут хранится только числа от 0 до 10, например, то в приведении к типу byte есть толк, так как вы будете расходовать меньше памяти.
Он округлил с помощью Math.round(), а ты, скорее всего, обратил внимание на то, что он сделал явное приведение double -> int! В таком случае число не округляется, а просто отсекается вещественная часть типа double.
Позволю себе поправочку в самом начале. Вы не совсем корректно указали диапазон возможных значений для простого целочисленного типа byte. Вы сказали, что этот тип может принимать значения в диапазоне [-127; 127], но это не совсем верно. Куда-то потерялось число -128. Верно будет так: [-128; 127]
Регистрируйтесь на курс "Продвинутая Java": czcams.com/video/rRe1vT0SDD8/video.html
Практикуйтесь в написании Java кода: java-marathon.tilda.ws
в игре Sid Meier's Civilization существовал баг, из-за которого Махатма Ганди, который никого не должен обижать, на определённом этапе игры становился крайне агрессивным и активно использовал ядерные боеголовки. Эта ошибка случилась из-за явного привидения типов, когда число становилось больше настолько, что вместо максимального уровня доброты, менялось на максимальный уровень злости.
Хотелось бы отметить, что при привышении значения переменной byte, мы не еще дальше уходим, а начинаем второй круг от -128... тоесть byte x=256 покажет нам 0. Это число и есть диапазон между -128 и 127. Следовательно 512 покажет нам также нулевое значение)
Лучшее учебное видео-пособие во всём ру-ютубе! Спасибо!
всеравно надо всех смотреть, один скажет это, второй дополнит, третий закрепит примером, четвертый напомнит, пятый спросит "а знаете ли вы", шестой скажет ну что будем кодить двоичным кодом?
Этот урок должен быть на мой взгляд в первой десятке, но как говорят: лучше поздно, чем никогда.
А так ролики очень информативны! Большое спасибо.
Огромное спасибо за эти видео уроки! Благодаря вам, обучение проходит гораздо легче и нагляднее, чем по книгам.
Спасибо за то, что это не муторно, не скучно, как делают большинство и понятно.
Даже в конце 2020 года твои видео актуальны! Молодец! Смотрю из Баку!
Твои уроки понятнее и проще к восприятию, чем в именитых онлайн универах!
Спасибо за работу!
Спасибо большое вам за уроки!))
Наконец-то более менее дошло, в чём дело. Спасибо
Спасибо тебе большое, за твои дела! 2020 на дворе, 3 года видео, но оно актуально!
а то!🙂
будем живы-здравы -- можем и чз 5 лет свериться на тему его актуальности😉🙂
2022 год,тема до сих пор актуальна
так это база. Как она может стать неактуальной.
к 2023 оно все еще не устарело!
2024 год - учу java))))
you are so very talented at explaining complicated things!!!!!bravo!
Благодаря тебе я знаю что такое Java. Спасибо !)))
Спасибо за ваши труды! Всё очень понятно
извиняюсь а по каким заданиям практикуете?
@@hikmatasgarli7036 javarush и skillbox
Благодарю за урок!!!
Реально такого учителя просто не найти, хочется слушать и слушать) Я очень рад, что ты не забросил канал и есть ещё много учебного материала, как все окучим тут перейдем на продвинутую Java. Конечно хотелось бы твоего мнения в каком порядке учить материал или может какие книги толковые, понимаю много всего, но хочется услышать твое мнение.
Все "Философия JAVA" советуют, Эккель
Ох спасибо, очень понятно)
Сложно, но очень интересно рассказываете
Тип byte имеет диапазон от -128 до 127
спасибо за уроки
Пожалуйста!
Благодарение!
Спасибо большое!
Благодарю!
Спасибо большое
Спасибо!
спасибо бро
Спасибо огромное за ваши уроки. Это самые понятные уроки, которые я нашол на Ютубе
Превышение диапазона это как стрелочные весы при попытке взвесить вес больше допустимого, стрелка по второму кругу пойдет
То есть, создаётся новая переменная? А где оно тогда хранит остаток?(прошлый круг).
2022 на связи
Всем Привет!! Дошол до 30 повторю ,все и дальше поиду ,в путь куда он ведет раскажу через год.
Можно ли использовать для введения значения типа обычный var?
Java заботится о типах)
Возможно, далее в роликах будет ответ (пока еще не дошел).
Правильно ли я понимаю, что по сути можно без потерь переходить на старший тип: byte -> short -> int -> long -> double ?
правильно, только вы будете тратить все больше и больше памяти.
Ура! Наконец-то качество 1080p60!
Размер byte от - 128 до 127
Привет , не могу не где в тубе найти преведение чара к инту и обратно , и разбора многомерных смасивов чаровых , если не тяжело запиши видосик
4:45 "long в 2 раза больше" звучит неоднозначно). Не сам лонг, а количество битов в 2 раза больше, каждьій бит - увеличение в 2 раза.
а что такое вещественные числа? есть понятное объяснение??
Вам нужно больше компрессии на голос и высоких частот
2021 год пришел с Джавараш (там мало годной информации)
Спасибо за уроки, все понятно и доступно
автоматическое это неявное
Можно я вас поправлю на первой минуте с byte не корректный трактовка в виде значения .... Это важный момент - Минимальная величина равна -128 (-27).
Максимальное значение равно 127 (включительно) (27-1).
2021 на связи🙂
Извини,что вопрос не по теме. Почему в Java сделано так,что переменные класса мы может инициализировать по умолчанию,а локальные переменные нет? Понятно,что будет ошибка компиляции,но за чем вообще так сделано?
Интересный вопрос.
Мне кажется, что причины были идеологические.
Если бы локальные переменные инициализировались по умолчанию, то никогда бы не возникала ошибка "Variable might not have been initialized"("Переменная может быть не инициализирована").
Благодаря этой ошибке мы можем увидеть, что мы где-то забыли инициализировать переменную. Исправив такую ошибку, мы можем рассчитывать на то, что все локальные переменные в нашей программе инициализированы.
Если бы локальные переменные инициализировались по умолчанию,
то мог бы возникнуть такой сценарий: (очень упрощенно)
int x; // забыли инициализировать
int y = 1;
int z = 1 / x; // получили ошибку. Деление на 0.
Так что инициализация локальных переменных по умолчанию могла бы приводить к неожиданным результатам, что плохо.
12:30
Помогите плиз - не понял почему мы не можем из double сделать округление и превратить в Int.
123 это же подходит под int. Почему java заставляет нас делать приведение в long ?
Потому что метод Math.round(); возвращает long. Можешь посмотреть как он работает под капотом в IntelliJ IDEA, нажав на данный метод через ctrl + клик мыши по методу.
Почему-то изображение вперед звука идет( благо тема легкая, спасибо за уроки и задания
Неожиданные вещи это задачи джавараша на эту тему:
Правильно расставь операторы приведения типа, чтобы получился ответ: d > 0.
int a = 0;
int b = (byte) a + 46;
byte c = (byte) (a*b);
double f = (char) 1234.15;
long d = (short) (a + f / c + b);
как успехи на javarush?
@@siberian_arg та я бросал , потом заново всё проходил , кумарят практические задания, не задачи , а ребусы блин какие то, что бы решить задачи надо очень много гуглить, возможно это влияет на то что лучше запомнишь, а возможно это сделано для того что бы как можно дольше находился на курсе и платил соответственно
Блин, да это логическая жопа, которая не имеет никакого отношения к логике самих примитивных переменных, как таковых. В задаче, как бы говорится, что операторы расставлены неправильно == расставь их правильно. Я честно сидел наверное часа 2, чёто думал, расставлял, пытался чёто понять, а что же тут неправильного с операторами, что они выдают минус, а правильная расстановка должна давать плюс. Как жеж расставить? Вот жеж как сложно! Где-то че-то я не понимаю еще! Как жеж мать его должно быть правильно? Мозг перегрелся, я пошел покемарить чуток и о чудо приснилось мне решение)))
Короче тут не столько важно, что вообще понаписано в коде и что, где расставлено. Тут важно только одно то, что код выдает минус 1. Это и есть самая главная и основная фишка задачи. Больше ничего не надо. Вообще! Вот абсолютно пофиг, что, где и как тут расставлено. d == Минус 1!!!
Вторая фишка, то что java (лично я вообще не понимаю этот прикол) перескакивает на противоположный конец значений при пересечении границы диапазона допустимых значений переменных. То есть, например, byte из минус 129 внезапно становится плюс 127 вместо того, что бы логически вывалиться в ошибку. Ход мысли уже понятен?
И только в самом конце вот этой логической жопы кроется реально логическое решение. Диапазоны CHAR == 0 - 65636. Если char вывалить в минус 1...... правильно! Будет + 65635. Собственно это всё. Необходимо пометь всего один оператор в последней строчке кода: long d = (char) (a + f / c + b);
сделай урок как рисовать в яве
Как всегда лайк! У меня вопрос: на каком этапе изучения Java можно приступать к изучению программирования под Android? Необходимо Java изучить от A до Я? Спасибо!
Нет, не обязательно знать от А до Я.
Лучше разбираться по ходу.
Извиняюсь, может я что-то упустил, но в каких случаях,моментах чаще всего на практике используется приведение примитивных типов?
Нет какого-то специального случая, просто вы должны знать, что так можно делать.
Н-р когда на вход приходят целые числа, а нужно вернуть вещественное как результат деления одного на другое тогда: return (double) a / b;
где int a, int b.
byte От -128 до 127,а не от -127 до 127
Он в конце сказал что ошибся.
Кто то до конца видео не смотрит
Отличные уроки, досмотрел до 30-го практически за один заход, пока что все более менее понятно, только не понятно как это все применять на практике? Ведь там мы не будем создавать абстрактных Person, Animal or Dogs...
P. S.
Явное.... приведение... типов... =))) А я все ждал когда же вы заметите?;)
Что бы знать как это все применять на практике нужно практиковаться. Просто смотреть - мало.
@@dmitry.gashko на практике практикуюсь, делаю задания типа сортировок массивов и смежные учебные задания. Даже пробую делать свое туристическое приложение с гугл картами. Но пока не знаю как именно нужно ПРАВИЛЬНО использовать основные принципы ООП и много с того что показал автор.
Ну я думаю, это нормально
Делаю для обучения список задач на домашнее задание (слизываю с разных ресурсов). Могу вам выслать для тренировки.
З.Ы. К этим урокам, непосредственно, эти задания никакого отношения не имеют.
@@korumstar9989 был бы рад взглянуть на ваш список для тренировки. Буду благодарен если вышлете сюда - dimon.develop@gmail.com или сюда - facebook.com/dimon.develop.
Я так и не поняла, почему нам нужно конвертировать инт в лонг, когда мы уже создали переменную типа лонг и там именно лонг и должен храниться, нет разве?
Eto Java, detka!
Он показывает явное приведение double к int и при этом отсекается вещественное число
если перевести double to float
byte -128-127
Зачем нужно приведение из большего в меньшее если выйдя за допустимый диапазон значение изменяется? Какой от этого толк?
В том, что вы описали нет никакого толка.
Но если вы знаете, что в переменной типа int будут хранится только числа от 0 до 10, например, то в приведении к типу byte есть толк, так как вы будете расходовать меньше памяти.
12:33 , решил проверить метод округления . Точь в точь всё написал и он не округляет
Он округлил с помощью Math.round(), а ты, скорее всего, обратил внимание на то, что он сделал явное приведение double -> int! В таком случае число не округляется, а просто отсекается вещественная часть типа double.
Позволю себе поправочку в самом начале. Вы не совсем корректно указали диапазон возможных значений для простого целочисленного типа byte. Вы сказали, что этот тип может принимать значения в диапазоне [-127; 127], но это не совсем верно. Куда-то потерялось число -128. Верно будет так: [-128; 127]
Да, вы правы. В видео ошибка.
Диапазон byte: [-128; 127].
Он в конце ролика сказал об этом )
2023 год
Byte ot -128