JavaRush/Курси/Java Syntax Zero/Літерали в Java

Літерали в Java

Відкрита

1. Літерали цілих чисел

А зараз нова цікава тема — літерали. Дані, внесені безпосередньо в код програми, називають літералами. Тут буде йтися не про будь-які дані, а про значення примітивних типів і типу String.

Наприклад, є такий код:

Код Літерали
int a = 5;
int b = a + 10;
String s = "Sum=" + (a + b);
5
10
"Sum="

Літерали в цьому коді — це число 5, число 10 і рядок Sum=.

У мові Java все, включно з літералами, має тип. Всі цілочислові літерали (цілі числа) в коді мають тип int. Тип int є стандартним типом цілих чисел у Java.

Тому, якщо ви у своєму коді вирішите присвоїти цілочисловий літерал змінній типу byte або short, проблем не буде. Потрібно тільки, щоб значення літерала було в межах діапазону доступних значень типу змінної.

Компілятор у Java досить розумний, щоб зрозуміти, що змінній типу byte можна присвоїти цілочисловий літерал 100, тому жодної проблеми не виникне.

Приклади:

Код Опис
int a = 300;
Буде нормально скомпільовано.
byte a = 100;
Буде нормально скомпільовано.
byte a = 300;
Буде помилка компіляції: максимальне значення типу byte дорівнює 127.

У коді можна також використовувати літерали типу long. Для цього в кінці цілого числа слід написати латинську літеру L або l.

Приклади:

Код Опис
long a = 3000000000L;
Буде нормально скомпільовано.
long a = 3000000000;
Помилка компіляції: 3 мільярди — завелике число для літерала типу int.
int a = 3000000000L;
Помилка компіляції: літерал має тип long, а змінна — тип int. До того ж число 3 мільярди перевищує максимальне значення типу int.

Ви, мабуть, звернули увагу, як складно читати великі числа довжиною 10 і більше знаків. Не відразу зрозумієш, що написано в коді: 3 мільярди чи 30. Щоб покращити прочитність коду (а це важливо!), у Java дозволено вставляти в числові літерали символи підкреслення (на значення числа вони не впливають).

Попередній приклад можна переписати з використанням символів підкреслення, і він стане зрозумілішим:

Код Опис
long a = 3_000_000_000L;
Буде нормально скомпільовано.
long a = 3_000_000_000;
Помилка компіляції: 3 мільярди — завелике число для літерала типу int.
int a = 3_000_000_000L;
Помилка компіляції: літерал має тип long, а змінна — тип int. До того ж число 3 мільярди перевищує максимальне значення типу int.

Використання коми в числових літералах не допускається, тому що кома використовується з іншою метою. Наприклад, для відокремлення один від одного аргументів під час виклику методу.


10
Задача
Java Syntax Zero,  10 рівень1 лекція
Недоступна
Цілочислові літерали
У класі Solution оголошено чотири публічних поля, що відповідають чотирьом цілочисловим типам. Під час оголошення ці поля ініціалізуються різними значеннями — цілочисловими літералами. Проте програма не компілюється, і це потрібно виправити. Для цього зміни значення полів так, щоб тип змінної відпов

2. Літерали дійсних чисел

У коді можна задавати не тільки цілочислові літерали, а й літерали з рухомою крапкою (дійсні числа).

Власне, правило дуже просте: якщо в коді є число з крапкою, то це число — літерал з рухомою крапкою. І не просто літерал, а літерал типу double.

Можна також створювати літерали типу float, але такі літерали мають закінчуватися літерою F або f.

Приклади:

Код Опис
double a = 100.0;
Буде нормально скомпільовано.
double a = 100.;
Буде нормально скомпільовано.
double a = .0;
Буде нормально скомпільовано.
float a = 100.0f;
Буде нормально скомпільовано.
float a = 100.0;
Буде помилка компіляції: змінна має тип float, а літерал — тип double.

До речі, можна дуже легко перетворити цілочисловий літерал на літерал типу float або double: для цього слід просто дописати до нього суфікс F (для float) або D (для double). Приклади:

Код Опис
double a = 100D;
Буде нормально скомпільовано.
float a = 100F;
Буде нормально скомпільовано.
int a = 300D;
Буде помилка компіляції: змінна має тип int, а літерал — тип double.

Для літералів з рухомою крапкою можна також використовувати «наукову форму запису»: крім значущої частини цього числа, вказується також степінь десяти. Приклад:

Літерал Математичний запис Значення
1.23E2
1.23 * 102
123.0
1.23E3
1.23 * 103
1230.0
1.23E-6
1.23 * 10-6
0.00000123
1E6
1.0 * 106
1000000.0
1E-10
1.0 * 10-10
0.0000000001

10
Задача
Java Syntax Zero,  10 рівень1 лекція
Недоступна
Літерали з рухомою крапкою
У класі Solution оголошено та ініціалізовано сім публічних полів. Їх ініціалізовано різними значеннями — літералами з рухомою крапкою. Проте програма не компілюється, і це потрібно виправити. Для цього зміни типи полів так, щоб вони відповідали значенням. Імена та значення полів не змінюй.

3. Літерали рядків

У коді також можна задавати цілі рядки тексту. Щоб компілятор вважав рядок саме даними (рядком тексту), а не частиною коду, весь рядок з обох сторін беруть у подвійні лапки.

Якщо в одному рядку коду є кілька подвійних лапок, вони обробляються попарно. Перша подвійна лапка позначає початок літерала, наступна — кінець літерала. Наступна за нею позначає початок наступного літерала, а наступна за нею — кінець цього літерала і т. д.

Кожен такий літерал має тип String.

Приклади

Код Пояснення
"+" + "+" + "+" + "+" + "+"
У рядку 5 літералів, кожен з яких складається з одного символу +.
""
Цей літерал — порожній рядок, тобто рядок, де немає символів.
"2+3" + "-5"
Тут два літерали. Результатом буде рядок 2+3-5, а не число.
"return" + ";"
Тут також два літерали, оператора return тут немає.

Якщо рядковий літерал надто довгий, його можна розбити на кілька рядків і склеїти оператором «плюс»:

Код Пояснення
String s = "Віють вітри, віють буйні, "
         + "Аж дерева гнуться. "
         + "О, як моє болить серце, "
         + "А сльози не ллються.";
Якщо вивести ці рядки на екран, увесь текст буде виведено як один рядок!

10
Задача
Java Syntax Zero,  10 рівень1 лекція
Недоступна
Рядкові літерали
У класі Solution оголошено та ініціалізовано публічне рядкове поле. Однак рядок задовгий, і його незручно читати. Для зручнішого читання його потрібно розділити на 5 підрядків, з'єднавши їх оператором "+" (конкатенація рядків) таким чином: перший рядок: "Завжди пишіть код так, " другий рядок: "ніби

4. Літерали символів

У коді можна задавати не лише рядкові літерали, а й літерали з окремих символів. Тут ідеться не про рядок, що містить один символ, а про літерали типу char.

На відміну від рядків, символьні літерали беруть в одинарні лапки. Між одинарними лапками обов'язково має бути символ, і тільки один. Не може бути одинарних лапок, між якими нічого немає.

Приклади:

Код Пояснення
'A'
Літерал типу char, містить латинську літеру A.
'@'
Літерал типу char, містить символ @
'本'
Літерал типу char, містить японський ієрогліф — так теж можна.
'\u1f3a'
Літерал типу char, містить символ у кодуванні Unicode, який задано його номером.

В останньому прикладі задано символ у кодуванні Unicode за допомогою спеціального запису: спочатку вказано префікс \u, потім 4 шістнадцяткових символи. Докладніше про це ми розповімо в наступних лекціях.


10
Задача
Java Syntax Zero,  10 рівень1 лекція
Недоступна
Символьні літерали
У класі Solution оголошено чотири публічних символьних поля. Їм присвоєно певні значення. Проте програма не компілюється. Це потрібно виправити, не змінюючи значень символів. Усі поля статичні (static) — це потрібно для того, щоб отримати до них доступ у методі main(). Побачити результат можна, якщо

Коментарі (20)
  • популярні
  • нові
  • старі
Щоб залишити коментар, потрібно ввійти в систему
Artem
Рівень 32
7 травня, 19:49
було б ще крутіше щоб можна було завантажити слайди з відео
Гаркін
Рівень 14
24 березня 2024, 16:12
Все зрозумів, крім одного. Чому у завдань рівень Medium ?! А ні! Ще є друге питання. На цю лекцію та завдання мені знадобилось 34 хвилини. Відео на годину та двадцять хвилин. Мда.
Andrіі Zorenko
Рівень 1
9 березня 2024, 11:46
Окрема дяка за лекцію
Alla Voloshchuk
Рівень 22
18 січня 2024, 21:23
Здається, там є помилка в відео. Вісімкова система включає числа від 0 до 7, 8 уже не входить. І відповідно трійкова включає числа від 0 до 2 (0, 1, 2).
Андрии Бумер
Рівень 29
8 січня 2024, 14:27
Відео крутецьке, спершу не думав дивитись, щоб не втрачачи час, але потім цкавість поборола, і недарма!) Чому подібних записів не було раніше?) це щось нове? чи до нових лекцій тільки стосуватиметься?
Олександр
Рівень 18
11 листопада 2023, 02:34
поясніть, я неуважний, чи воно так і є, що на одній з цих задач умова настільки неочевидна що витрачаешь 9 спроб, а в іншій відповідь буквально в умові?
Павло java newcomer
17 вересня 2023, 07:01
Любе число в 0 дорівнює 1
Павло java newcomer
17 вересня 2023, 07:00
математика 3 клас
Павло java newcomer
17 вересня 2023, 06:58
2 в 0 =1 2 в 1 =2 2 в 2 =4
Anonymous #3425794
Рівень 11
14 грудня 2024, 17:16
😁😁😁
2 серпня 2023, 11:40
мені одно кажется що програмуваНя на джава та роблокс схожі