Урок №3. Примітивні типи даних. Сильна типізація. Приведення типів. [Java українською]

  Рет қаралды 3,282

Mykola Murza — Ukrainian IT

Mykola Murza — Ukrainian IT

Күн бұрын

Базовий курс з програмування мовою Java.
У третьому уроці ми говоримо про примітивні типи даних (цілочисельні, з плаваючою точкою, символьні та булеві). Також я розказую про сильну типізацію, привидення типів даних та цікаву історію про KZbin. Намагався зробити максимально цікаво та зрозуміло, аби ця тема не лякала початківців.
==============================
Посилання на JDK: jdk.java.net/java-se-ri/17
Посилання на IntelliJ IDEA: www.jetbrains.com/idea/download
Офіційна документація про примітиви: docs.oracle.com/javase/tutori...
Стаття про плаваючу точку та точність: www.ilikebigbits.com/2017_06_0...
Документація про BigDecimal: www.baeldung.com/java-bigdeci...
==============================
Зміст відео:
0:00 - Вступ до відео.
0:18 - Сильна типізація.
1:02 - Byte. Двійкова система.
3:44 - Цілочисельні дані.
4:33 - Числа з плаваючою точкою.
5:30 - Символьні дані.
6:03 - Булеві дані.
6:12 - Приведення даних (явне та неявне).
7:50 - Тестуємо та програмуємо.
9:51 - Історія і завершення відео.
==============================
Дякую, що дивитесь! Прошу залишати відгуки та побажання у коментарях.
Telegram-канал: t.me/java_classroom
#java #javacourse #ukraine #ua #programming #programminglanguage #программирование #програмування #курси #українською #мова #джава #byte #bit #short #int #integer #long #char #character #double #float #floating #boolean #bool #windows #windows10 #gangnamstyle

Пікірлер: 30
@mykolamurza
@mykolamurza Жыл бұрын
Домашнє завдання до уроку №3: 1) Створити змінні усіх типів даних (byte, short, int, long, float, double, char, boolean), задати їм довільне значення, яке якнайкраще показує сутність того чи іншого типу. 2) Помістити змінну типу long в змінну типу int. [* підказка] 3) Помістити змінну типу int в змінну типу char та вивести результат в консоль. Пояснити, чому так відбулось. [** підказка] * Для цього використовуй приведення типів (int), приклад використання показано у відео, 6:43. ** Згадай, що значенням char відповідають значення з таблиці ASCII.
@nazark01
@nazark01 7 ай бұрын
крутий контент. Було би ще круто бачити дубляж ключовий значень або виразів на англ мові
@TheSerpius
@TheSerpius Жыл бұрын
Дякую за якісний контент українською мовою!
@svitoij
@svitoij Жыл бұрын
Дуже класна фраза на початку:"Скажу одразу, знати все на пам'ять не потрібно, ця інформація з часом сама відкладеться в голові. А я поки спробую просто і зрозуміло все пояснити"👍👍👍
@user-yb5mu1zs8t
@user-yb5mu1zs8t Жыл бұрын
Ви дуже, дуже милий! Ідеально для людей, хто трохи боїться пірнати в усі ці науки 💙
@mykolamurza
@mykolamurza Жыл бұрын
Хах, дякую!🥰 Це відео буде перезнято. Незважаючи, що матеріалу я дав більше, ніж зазвичай дають викладачі, він вийшов доволі заплутаний. Кількість інформації не зміниться, але подача покращиться😇
@user-kp7uq1hm1y
@user-kp7uq1hm1y Жыл бұрын
Дякую за україномовний урок! Все буде Україна!
@mad-hat
@mad-hat Жыл бұрын
Чудово зроблені слайди. Було би чудово, якби ви їх теж викладали у вільний доступ. 👍 за корисні посилання в описі. Чудове пояснення викладеного матеріалу
@mykolamurza
@mykolamurza Жыл бұрын
Дякую за ідею. Подумаю, опублікую в ПДФ згодом.
@sofiiabondarenko6615
@sofiiabondarenko6615 Жыл бұрын
дякуюза вашу працю!
@user-og2ti2wd5o
@user-og2ti2wd5o Жыл бұрын
просто шикарно!
@mathgeometry328
@mathgeometry328 9 ай бұрын
Short в Int розширююче перетворення а якщо навпаки яку має назву чи там немає назви?
@mykolamurza
@mykolamurza 9 ай бұрын
В Java часто використовують саме терміни явне та неявне перетворення. Щодо твого питання - назва є, "звужувальне перетворення" (narrowing conversion).
@user-zi4tu2pk6g
@user-zi4tu2pk6g 8 ай бұрын
byte byteVal =(byte)127; System.out.println(byteVal);виводить 127 потім якщо 128 то -127 і по спадній до 256 ---- дорівнює 0 257 дорівнює 1. Цікаво що комп'ютер не знає що таке віднімання комп'ютер використовує блок суматора
@mykolamurza
@mykolamurza 8 ай бұрын
Привіт, так, якщо писати 128, то буде -127 тощо. Ця особливість пов'язана з двійковим представленням чисел та внутрішньою роботою арифметичних операцій. Така зміна чисел відбувається через переповнення, тому коли ми пишемо, наприклад, 130, то ми отримуємо число 127 (максимальне додатне для byte з урахуванням 7 байтів під число), оскільки стрічка переповнена, переходимо до мінімального значення -128, і "зайві 2" додаємо до -128, що призводить до отримання -126. Якщо говорити за число 257, то це 127 + шлях від -128 до 0 і знову +1, виходить 1.
@user-zi4tu2pk6g
@user-zi4tu2pk6g 9 ай бұрын
Чому true чи false займають аж 1байт їм стало б по біту типу 0 --- false 1 --- true?
@mykolamurza
@mykolamurza 9 ай бұрын
Привіт. Так, абсолютно вірно! Щодо цього детальніше розповідаю тут: t.me/java_classroom/120
@SuperKsiy
@SuperKsiy Жыл бұрын
Мабуть, все ж таки примітивні типи даних, а не типи примітивних даних. Бо тоді виникає питання, що таке примітивні дані. Точність формулювань важлива.
@mykolamurza
@mykolamurza Жыл бұрын
Гарне зауваження, змінимо табнейл і назву відео, дякую!
@vidakilla7242
@vidakilla7242 Жыл бұрын
Поясніть будь ласка, чому у деяких випадках пишемо тип у дужках, а в інших ні? Наприклад, у першому ми не написали, а коли навпаки з integer y char, то пишемо (char) 1. //char to integer // char charValue = 'a'; // int integerValue = charValue; // System.out.println(integerValue); 2. //integer to char // int integerValue = 100; // char charValue = (char) integerValue; // System.out.println(charValue);
@mykolamurza
@mykolamurza Жыл бұрын
Привіт. Це приведення типів (6:12). Якщо ми змінну "більшого" типу приводимо в "менший" (int -> char), то потрібно робити явне приведення типів, тобто писати (char). Оскільки ми маємо сказати Java, що ми дійсно хочемо засунути більшу змінну в менший діапазон. Наприклад, ми хочемо int засунути в byte, значення int може бути до 2.1 млрд, а байт - до 127. Тому ми кажемо, що так, ми впевнені, ми розуміємо які проблеми можуть бути і таке інше, але все ж хочемо перевести int в byte. Для приведення byte в int писати нічого не треба, бо байт менше. Навіть його найбільше значення (127) легко потрапить в діапазон int (2.1 млрд), жодних змін значення чи проблем з ним бути не може.
@vidakilla7242
@vidakilla7242 Жыл бұрын
@@mykolamurzaщиро дякую!! Тепер усе зрозуміло!!
@bohdankokhan7235
@bohdankokhan7235 Жыл бұрын
Чудово, що з'являється більше контенту українською. Але автор в даному відео допустив помилку: Розмір змінної типу boolean 1 bit, а не 1 byte (у двійковій системі для true це 1, а для false - 0) Також, вперше побачив таке пояснення двійкової системи. Зазвичай його показують на прикладі ламп, які світяться або ні. Кожна наступна відповідає подвійному попередньому значенню (1,2,4,8,16,32,64,128). Таким чином ми можемо отримати будь-яке число від 1 до 255, якщо жодна лампа не світиться то тоді значення 0. Половина відноситься на від'ємні значення(128), інша половина залишається на додатні значення+нуль(тому їх завжди на 1 менше). Ефект переповнення краще пояснити на круговій діаграмі де 127 переходить у -128.
@mykolamurza
@mykolamurza Жыл бұрын
Добрий день! Дякую за рекомендації та відгук! Щодо розміру типу boolean - ви помиляєтесь. Так, для зберігання true/false дійсно достатньо 1/0, а це всього 1 біт. Але пам'ять, яку займає boolean, залежить від версії та дистрибутиву JVM. Oracle JDK, скажімо так, офіційна версія, для зберігання boolean виділяє 8 біт. Доказ: docs.oracle.com/javase/specs/jvms/se7/jvms7.pdf, сторінка номер 11, написано буде зверху. Я в відео кажу просто про єдине і найбільше значення для розуміння можливих затрат пам'яті. Великий тред на цю тему: stackoverflow.com/questions/20948361/why-does-the-boolean-data-type-need-8-bits
@mathgeometry328
@mathgeometry328 9 ай бұрын
Чому сильна типізація а не елементарна?
@mykolamurza
@mykolamurza 9 ай бұрын
Це термін :) Є програми із сильною типізацією - Java. Тут потрібно обрати тип для змінної і тільки такий тип в ній може бути. Є програми зі слабкою або динамічною типізацією - створив умовний var або let, і можеш складати туди будь-що, причому можеш спочатку зберегти число, потім об'єкт, потім рядок тощо. en.wikipedia.org/wiki/Strong_and_weak_typing
@mathgeometry328
@mathgeometry328 9 ай бұрын
число 0 є нейтральне число ні додатньє ні відємне
@mykolamurza
@mykolamurza 9 ай бұрын
Так, вірно. Підкажи, на якому тайм-коді я помилився, будь ласка :)
@MisaNia25
@MisaNia25 5 ай бұрын
@@mykolamurza2:14
@mykolamurza
@mykolamurza 5 ай бұрын
@@MisaNia25, дякую за таймкод. У даному моменті я казав не про те, що 0 додатнє число, а про те, що якщо лівий біт дорівнює 0, то число буде додатнє :)
Дзвінок в обсерваторію
3:48
Вікторія Ільчук
Рет қаралды 17 М.
MINHA IRMÃ MALVADA CONTRA O GADGET DE TREM DE DOMINÓ 😡 #ferramenta
00:40
I Trapped Myself in a Box with Colored Smoke!
00:50
A4
Рет қаралды 18 МЛН
船长被天使剪成光头了?#天使 #小丑 #超人不会飞
00:28
超人不会飞
Рет қаралды 20 МЛН
Разбираем основы Kafka и RabbitMQ
26:54
Digital train | Alex Babin
Рет қаралды 6 М.
Урок №12. Stream API. Частина 1. Теорія. [Pro-українська Java]
12:08
Mykola Murza — IT українською
Рет қаралды 1,9 М.
MINHA IRMÃ MALVADA CONTRA O GADGET DE TREM DE DOMINÓ 😡 #ferramenta
00:40