top of page

Примітивні типи даних у Java.


У Java наявні 2 типи даних - примітивного й посилального типу.


Спочатку поговоримо про примітивні типи даних.


- На картинці нижче зображені основні характеристики вісьмох примітивних типів даних у Java - byte, short, int, long, float, double, char, boolean.





Картинку взято з сайту: https://www.google.com/url?sa=i&url=https%3A%2F%2Fvertex-academy.com%2Ftutorials%2Fuk%2Ftipi-zminnix-u-java-stvorennya-zminnix%2F&psig=AOvVaw2dqDIZ-FIZ5va9Y3ZNENVn&ust=1690014370726000&source=images&cd=vfe&opi=89978449&ved=0CBMQjhxqFwoTCPDz-aSwn4ADFQAAAAAdAAAAABAD



Почнімо з цілочисельних примітивних типів даних.


1.1. Int

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

- Зокрема Java виділяє під int 32 біти (4 байти) пам'яті. Відповідно діапазон допустимих значень лежить в інтервалі від (-2^(31) до 2^(31) - 1 (від -2 млрд до 2 млрд).

- Ми оголошуємо тип int так:

int x = 424_242;

int y;

- Дефолтне значення змінної типу int, що оголошена без присвоєння, - 0.

- Якщо змінна оголошена визначена в методі, ми повинні присвоїти значення перед тим як використовувати цю ж змінну.

- Ми можемо виконувати всі стандартні арифметичні операції над змінними типу int. Також варто мати на увазі, що під час виконання цих дій над цілими числами десяткові значення будуть обрізані.


1.2. Byte

- byte - примітивний тип даних, що дуже подібний до int, за винятком того, що тип byte займає 8 біт (1 байт пам'яті), саме тому і носить назву "байт". Діапазон допустимих значень byte лежить в інтервалі від -128 (-2^(7)) до 127 (2^(7) - 1).

- Значення за змовуванням типу byte дорівнює 0.

- Ми оголошуємо тип byte так:

byte b = 100;

byte empty;

1.3. Short

- short - примітивний тип даних, що займає 16 бітів (4 байти) пам'яті, тобто удвічі менший за int і удвічі більший за byte. Діапазон допустимих значень лежить в інтервалі від -32768 (-2^(15)) до -32767 (2^(15) - 1).

- Значення за змовуванням подібно до інших типів також 0. Також ми можемо використовувати всі стандартні базові операції.

- Ми оголошуємо тип short так:

short s = 20_020;

short s;

1.4. Long

- long - примітивний тип даних, що займає 64 біти (8 байт) пам'яті, тож діапазон допустимих значень лежить в інтервалі від -9223372036854775808 (-2^(63)) до 9223372036854775807 (2^(63) - 1).

- Як і в решти цілочисельних типів даних, значення за змовчуванням (дефолтне) - 0. Також ми можемо використовувати всі стандартні базові операції.

- Особливістю типу long є те, що ми повинні ставити літерали L (краще ставити велику L, бо маленьку l легко зплутати з одиницею) або l в кінці нашого числа, наприклад:

long l = 1_234_567_890L (або 1_234_567_890l);

long l;


Перейдімо до дійсних примітивних типів даних.


1.5. float

- Ми представляємо десяткові числа одинарної точності за допомогою типу float. Одинарна точність означає те, що якщо ми перевищуємо шість знаків після коми, число стає менш точним і більше приблизним, ніж точним.

- У більшості випадків ми не дбаємо про втрату точності, однак якщо наші розрахунки вимагають абсолютної точності (наприклад, фінансові операції, програмування надточних приладів тощо), нам потрібно використовувати спеціальні типи, що призначені для цієї роботи (наприклад, класи Big integer, Big Decimal).

- Тип float зберігається в 32-х бітах (4-х байтах) пам'яті так само, як int. Однак через плаваючу кому його діапазон значно відрізняється. float може представляти як додатні, так і від'ємні числа.

- Діапазон значень лежить в інтервалі від 1.40239846 x 10^(-45) до 3.40282347 * 10^(38).

- Значення за замовчуванням (дефолтне) - 0.

- Особливістю типу float є те, що ми повинні ставити літерали F (краще ставити велику F, бо маленьку f легко зплутати з одиницею) або f в кінці нашого числа, наприклад:

float f = 3.145f (або 3.145F);

float f;

- Літеру F (f) потрібно ставити через те, що дефолтний тип чисел дійсного типу - double.

- Ми також можемо виконувати всі стандартні арифметичні операції з типом float. Однак важливо зазначити, що ми виконуємо арифметику чисел з плаваючою комою зовсім по-іншому, аніж цілих.


1.6. double

- double - примітивний дійсний тип даних, що дозволяє нам представляти десяткові числа з подвійною точністю.

- Для змінної типу double виділяється 64 біти (8 байт) пам'яті. Це означає, що double представляє набагато більший діапазон можливих чисел, ніж float. Діапазон допустимих значень лежить в інтервалі від 4,9406564584124654 * (10^(-324)) до 1,7976931348623157 * (10^(308)).

- Значення за замовчуванням також дорівнює 0,0, як і для float.

- Подібно до float, ми додаємо літеру D (d), щоб позначити літерал як подвійний (хоча d додавати необов'язково - дефолтний тип чисел дійсного типу - double:

double d = 3.13457599923384753929348D (або 3.13457599923384753929348d);

double d;


Також розглянемо 2 типи даних, що залишилися - boolean і char.


1.7. boolean

- Найпростіший примітивний тип даних - boolean.

- Тип даних boolean може набувати лише 2-х значень - true або false, тобто значення змінної типу boolean займає лише 1 біт пам'яті, однак пам'ять не виділяється такими порціями, тож розмір змінної типу boolean залежатиме від того, як його упакує віртуальна машина (тобто розмір змінної типу boolean залежить від пристрою і версії віртуальної машини).

- Значення за замовчуванням дорівнює false.

- Приклад того, як ми оголошуємо змінні типу boolean:

boolean b = true;

boolean b;

1.8. char

- Останній примітивний тип даних - char.

- Також відомий як character, тип char являє собою 16-бітне (2-х байтне) число, що представляє собою закодований згідно таблиці Unicode символ.

- Діпазон допустимих значень лежить в інтервалі від 0 до 65535. В Unicode це представляється кодами від \u0000' to ‘\uffff'.

- Для перегляду всіх можливих значень Unicode можна відвідати такі сайти як, наприклад, Unicode Table.

- Значення за замовчуванням типу char дорівнює '/u0000'.

- Коли ми визначаємо наші змінні типу char, ми можемо використовувати будь-який символьний літерал і він автоматично буде перетворений на символ у кодуванні таблиці Unicode.

- Приклад того, як ми оголошуємо змінні типу char:

char c = 'a';

char c = 65;

char c;

Ось картинка, на якій досить гарно проілюстровано, які існують типи даних у Java.


- Більш детально про об'єкти посилального типу ми поговоримо у наступних статтях.



1.9. Переповнення.


- Примітивні типи даних мають визначені розміри. Однак що станеться, якщо ми спробуємо помістити значення, що перевищує максимальне значення змінної?


- Ми потрапимо в ситуацію, що називається переповненням - коли значення переповнюється, воно повертається до мінімального значення змінної відповідного типу і рахунок починається від цього мінімального значення.

- Наприклад, при переповненні дійсних чисел з подвійною точністю (double) нам повертається значення Infinity:

int i = Integer.MAX_VALUE;
int j = i + 1;
// j will roll over to -2_147_483_648

double d = Double.MAX_VALUE;
double o = d + 1;
// o will be Infinity

Underflow

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




1.10. Autoboxing


- Кожен примітивний тип даних у Java має повноцінний клас-обгортку. Для прикладу, клас Integer обгортає int. Класи-обгортки необхідні тому, що іноді виникає необхідність у перетворенні примітивного типу на об'єкт класу-обгортки (наприклад, при роботі зі структурами даних, дженериками).


- На щастя Java має змогу здійснювати подібні перетворення автоматично, цей процес називається Autoboxing (тобто перетворення змінної примітивного типу в об'єкт класу-обгортки):


Character c = 'c';

Integer i = 1;

Останні пости

Дивитися всі

Comments

Rated 0 out of 5 stars.
No ratings yet

Add a rating
bottom of page