Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Java_L2.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
61.54 Кб
Скачать
      1. Літерали

Літерали дозволяють задати в програмі значення для числових, символьних и рядкових виразів, а також null-літералів. В Java визначені такі види літералів:

  • цілочисловий (integer):

  • дробовий (floating-point);

  • булевий (boolean);

  • символьний (character);

  • рядковий (string);

  • null-літерал(null-literal).

        1. Цілочислові літерали

Цілочислові літерали дозволяють задавати цілочислові значення в десятковому, вісімковому і шістнадцятковому виді. Десяткова форма традиційна. Значення у вісімковому вигляді починаються з нуля і використання цифр 8 та 9 заборонено. Записи шістнадцяткових чисел починаються з 0xабо 0X (цифра 0 і латинська ASCII-букваX в довільному регістрі). Отже, нуль можна записати трьома різними способами:

0

00

0x0

Зазвичай, для запису 10-15 в шістнадцятковій формі використовуються буквиA, B, C, D, E, F, великі або малі. Приклади таких літералів:

0xaBcDeF, 0xCafe, 0xDEC

Типи даних розглядаються нижче, однак вкажемо два цілочислових типи int іlong довжиною 4 і 8 байтів відповідно (або 32 і 64 біти відповідно). Обидва ці типи знакові, тобто тип int зберігає значення від до або від -2147483648 до 2147483647. За замовчуванням цілочисловий літерал має тип int, а значить, в програмі припустимо використовувати тільки від 0 до 2147483648, інакше виникне помилка компіляції. При цьому літерал 2147483648можна використовувати як аргумент унарного оператора –.

intx =– 2147483648; //

inty =5 – 2147483648; //

Відповідно, припустимі літерали у вісімковому записові повинні бути від 00 до 017777777777 (= ), з унарним оператором – допустимо також –020000000000 (=– ). Аналогічно для шістнадцяткового формату – від 0x0 до 0x7fffffff (= ), а також – 0x80000000 (= – ).

Тип long має довжину 64 біти, а значить, дозволяє зберігати значення від до . Щоб ввести такий літерал, потрібно в кінці поставити латинську буквуL абоl, тоді всі значення трактуватимуться якlong. Аналогічно можна виписати максимально припустимі значення для них:

9223372036854775807L

0777777777777777777777L

0x7fffffffffffffffL

// найменші від’ємні значення:

–9223372036854775808L

–01000000000000000000000L

–0x8000000000000000L

Інші приклади цілочислових літералів типу long:

0L, 123l, 0xC0B0L

        1. Дробові літерали

Дробові літерали – числа з плаваючою десятковою крапкою. Правила запису таких чисел такі ж, як і в більшості сучасних мов програмування. Приклади:

3.14

2.

.5

7e10

3.1E–20

Отже, дробовий літерал складається з таких складових частин:

  • ціла частина;

  • десяткова крапка (використовується АSCII-символ точка);

  • дробова частина;

  • показник степеня (складається з латинської ASCII-буквиEв довільному регістрі і цілого числа з опціональним знаком + або –);

  • закінчення-вказівник типу.

Ціла і дробова частини записуються десятковими цифрами, а вказівник типу (аналог вказівника L абоl для цілочислових літералів типу long) має два можливих значення – латинська ASCII-буква D (для типу double) або F (для типу float) в довільному регістрі.

Необхідними частинами є:

  • хоча б одна цифра в цілій або дробовій частинах;

  • десяткова точка або показник степеня або вказівник типу.

Усі інші частини необов’язкові. Отже, “мінімальні” дробові літерали можна записати, наприклад, так:

1.

.1

1e1

1f

У Java є два дробових типи, згадані раніше, – float іdouble. Їх довжина – 4 і 8 байтів або 32 і 64 біти відповідно. Дробовий літерал має типfloat, якщо закінчується на латинську букву F в довільному регістрі. В противному випадку він розглядається як значенняdoubleи може закінчуватися D абоd, як ознакою типу double (це може використовуватися тільки для наглядності).

// float-літерали:

1f, 3.14F, 0f, 1e+5F

// double-літерали:

0., 3.14d, 1e-4, 31.34E45D

В Java дробові числа 32-бітового типуfloat 64-бітового типуdouble зберігаються в памм’яті в бінарному вигляді у форматі, стандартизованому специфікацієюIEEE 754 (повна назва – IEEE Standard for Binary Floating-Point Arithmetic, ANSI/IEEE Standard 754-1985 (IEEE, New York)). У цій специфікації описані не тільки скінченні дробові величини, але й ще кілька особливих значень, а саме:

  • додатна і від’ємна безмежності (positive/negative infinity);

  • значення “не число”, Not-a-Number, або скороченоNaN;

  • додатний і від’ємний нулі.

Для цих значень немає спеціальних позначень. Щоб одержати такі величини необхідно або виконати арифметичну операцію (наприклад, результатом ділення нуль на нуль 0.0/0.0 будеNaN), або звернутися до сталих в класахFloat іDouble, а самеPOSITIVE_INFINITY, NEGATIVE_INFINITY іNaN.

Типи даних накладають певні обмеження на можливі значення літералів, як і для цілочислових типів. Максимальне скінченне значення дробового літералу:

  • для float: 3.40282347e+38f

  • для double 1.79769313486231570e+308

Крім цього, для дробових величин стає важливим ще одно граничне значення – мінімальне додатне ненульове значення:

  • для float:1.40239846e-45f

  • для double:4.94065645841246544e-324

Спроба вказати літерал з надто великим абсолютним значенням (наприклад, 1e40f) зумовить помилку компіляції. Така величина повинна представлятися безмежністю. Аналогічно, спроба вказати літерал з надто малим ненульовим значенням (наприклад, 1e-350) зумовлює помилку. Це значення треба заокруглити до нуля. Однак, якщо заокруглення відбувається не до нуля, то компілятор здійснить його сам:

// помилка, вираз повинен бути заокруглений до 0

0.0000000000000000000000000000000000000000000001f

// помилки немає, компілятор сам заокруглює до 1

1.0000000000000000000000000000000000000000000001f

Стандартних можливостей вводити дробові значення не в десятковій системі в Java нема, однак класиFloat іDouble надають багато допоміжних методів, в тому числі й для такої задачі.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]