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

Літерали в Java

Java Syntax Zero
Рівень 10 , Лекція 1
Відкрита

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.

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



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


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

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

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

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

Приклади

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

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

Код Пояснення
String s = "Буря мглою небо кроє "
         + "Вихри снежные крутя "
         + "То как зверь она завое "
         + "То заплачет как дитя";
Якщо вивести цей рядок на екран, увесь текст виведеться в один рядок!


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

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

Символьний літерал обрамлюється одинарними лапками, на відміну від рядка. Усередині одинарних лапок обов'язково має бути символ і лише один. Не може бути порожніх одинарних лапок.

Приклади:

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

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


Коментарі (20)
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ
Artem Рівень 40
7 травня 2025
було б ще крутіше щоб можна було завантажити слайди з відео
Гаркін Рівень 14
24 березня 2024
Все зрозумів, крім одного. Чому у завдань рівень Medium ?! А ні! Ще є друге питання. На цю лекцію та завдання мені знадобилось 34 хвилини. Відео на годину та двадцять хвилин. Мда.
Andrіі Zorenko Рівень 30
9 березня 2024
Окрема дяка за лекцію
Alla Voloshchuk Рівень 22
18 січня 2024
Здається, там є помилка в відео. Вісімкова система включає числа від 0 до 7, 8 уже не входить. І відповідно трійкова включає числа від 0 до 2 (0, 1, 2).
Андрии Бумер Рівень 36
8 січня 2024
Відео крутецьке, спершу не думав дивитись, щоб не втрачачи час, але потім цкавість поборола, і недарма!) Чому подібних записів не було раніше?) це щось нове? чи до нових лекцій тільки стосуватиметься?
Олександр Рівень 18
11 листопада 2023
поясніть, я неуважний, чи воно так і є, що на одній з цих задач умова настільки неочевидна що витрачаешь 9 спроб, а в іншій відповідь буквально в умові?
Павло Рівень 48
17 вересня 2023
Любе число в 0 дорівнює 1
Павло Рівень 48
17 вересня 2023
математика 3 клас
Павло Рівень 48
17 вересня 2023
2 в 0 =1 2 в 1 =2 2 в 2 =4
Anonymous #3425794 Рівень 11
14 грудня 2024
😁😁😁
2 серпня 2023
мені одно кажется що програмуваНя на джава та роблокс схожі