1. Пристрій пам’яті
У кожного комп’ютера є оперативна пам’ять. Що ж це таке, якими властивостями вона володіє і, найголовніше, яка з цього користь?
Кожна програма (в тому числі програми, написані на Java) перед виконанням завантажується в оперативну пам’ять. В оперативній пам’яті знаходиться код програми (який виконується процесором) і дані програми (які в пам’ять розміщує сама програма).
Що ж таке оперативна пам’ять і на що вона схожа?
Уявіть собі Excel 😎 Аркуш в Excel складається з комірок, і в кожної комірки є її унікальний номер (A1, A2, ... B1, B2). Знаючи номер комірки, завжди можна записати в неї якесь значення або дістати значення, яке там зберігається. Пам’ять комп’ютера влаштована дуже схоже.

Програма і її дані під час роботи зберігаються в пам’яті. Вся пам’ять комп’ютера представлена у вигляді маленьких комірок – байтів. У кожної комірки є її унікальний номер – 0, 1, 2, 3, ... (нумерація починається з нуля). Знаючи номер комірки, ми можемо зберегти в цю комірку якісь дані. Або дістати їх звідти. В одних комірках зберігається код програми – набір команд для процесора, в інших – дані цієї програми. Номер комірки також називають адресою комірки.
Процесор вміє виконувати команди із завантаженої в пам’ять програми. Майже всі команди процесора — це щось на кшталт: взяти дані з деяких комірок → зробити з ними щось → результат розмістити в інші комірки
Об’єднуючи сотні простих команд, ми отримуємо складні та корисні програми.
Коли в коді програми оголошується змінна, їй виділяється шматочок ще не використаної пам’яті. Зазвичай це кілька байтів. При оголошенні змінної обов’язково потрібно вказати тип інформації, яку програма буде зберігати в ній: числа, текст або інші дані. Адже не знаючи типу інформації, складно визначити, якого розміру блок пам’яті потрібно виділити під змінну.
На зорі розвитку обчислювальної техніки програми працювали просто з номерами комірок пам’яті, але потім для зручності програмістів коміркам почали давати імена. Унікальне ім’я змінної — це в першу чергу для зручності програмістів: програма під час роботи чудово справлялася б і з номерами.
2. Змінні в пам’яті
Усього в Java є 4 типи даних для зберігання цілих чисел. Це byte, short, int і long.
| Тип | Розмір, байт | Походження імені |
|---|---|---|
byte |
1 |
Byte, бо займає один байт пам’яті |
short |
2 |
Скорочення від Short Integer |
int |
4 |
Скорочення від Integer |
long |
8 |
Скорочення від Long Integer |
Також в Java є 2 дійсних типи — float і double:
| Тип | Розмір, байт | Походження імені |
|---|---|---|
float |
4 |
Скорочення від Floating Point Number |
double |
8 |
Скорочення від Double Float |
Кожного разу, коли виконання програми доходить до команди створення змінної, їй виділяється невелика область пам’яті (розмір залежить від типу змінної).
Java-програмам заборонено напряму звертатися до пам’яті. Вся робота з пам’яттю відбувається тільки через Java-машину.
3. Тип String в пам’яті
Тип String може зберігати великі обсяги даних, тому це не просто тип даних, а повноцінний клас.
Самі дані типу String (текст) розміщуються в спеціальному об’єкті, під який виділяється пам’ять, а вже адреса цього об’єкта розміщується в змінній, під яку також виділяється пам’ять.
Змінна a типу int займає 4 байти і зберігає значення 1.
Змінна b типу int займає 4 байти і зберігає значення 10,555. Кому тут — це не дробова частина числа, а поділ розрядів. Дробова частина відділяється крапкою
Змінна d типу double займає 8 байтів і зберігає значення 13.001.
Змінна str типу String займає 4 байти і зберігає значення G13 — адресу першої комірки об’єкта, що містить текст.
Об’єкт типу String (що містить текст) зберігається окремим блоком пам’яті. Адреса його першої комірки зберігається в змінній str.
4. Чому у програмуванні все нумерують з нуля
Люди дуже часто дивуються, чому у програмуванні майже всюди прийнято рахувати з нуля. Справа в тому, що є дуже багато ситуацій, коли рахувати з нуля зручніше (хоча є й ситуації, коли зручніше рахувати з 1).
Найпростіша з таких ситуацій — це адресація пам’яті. Якщо вашій змінній виділили 4 байти пам’яті, і у вас є X – адреса першого байта, то які будуть адреси у всіх байтів? X+0, X+1, X+2, X+3. Ось ми вже й отримали групу байтів з індексами 0, 1, 2, 3.
Коли ми думаємо про відносну адресу всередині якогось блоку даних, завжди отримуємо нумерацію з нуля. Це і є перша та найпоширеніша причина рахунку з нуля.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ