— Это опять я: забыл кое-что объяснить. Сейчас я расскажу тебе про переменные и адресацию памяти. Не сильно вникай, но если что-то запомнишь – уже хорошо!

— Люблю твой подход к урокам. Понял что-то – хорошо. Ничего не понял – ну и ладно.

— Насильно мил не будешь. Это же очевидно. А что, у вас не так?

— Нет. У нас другой подход: хочешь – учишь, не хочешь – учишь, но нехотя.

— М-да, какой отсталый подход к обучению. Это ж вы уйму сил и времени тратите, а результатов почти нет.

— Еще как тратим! Ладно, не будем о грустном.

— Ладно. Представь себе Excel. Все знают Excel. Страница в Exсel’е состоит из ячеек, и у каждой ячейки есть её уникальный номер (A1, A2,…B1, B2). Зная номер ячейки, всегда можно записать в неё какое-то значение или же получить значение, которое там хранится. Память компьютера устроена очень похоже.

image-ru-01-25

— Пока все понятно.

— Программа и её данные во время работы хранятся в памяти. Вся память компьютера представлена в виде маленьких ячеек — байт. У каждой ячейки есть её уникальный номер — 0,1,2,3,… (нумерация начинается с нуля). Зная номер ячейки, мы можем сохранить в неё какие-то данные. Или взять их из неё. В одних ячейках хранится код программы — набор команд для процессора, в других — данные этой программы. Номер каждой ячейки также называют её адресом.

— Процессор, команды — мне профессор что-то рассказывал про это, но не очень подробно.

— Процессор – это такая штука, которая умеет исполнять команды из загруженной в память программы. Почти все команды процессора – это что-то типа «взять данные из некоторых ячеек, сделать с ними что-то, результат поместить в другие ячейки». Объединяя сотни простых команд, мы получаем сложные и полезные команды.

— И зачем мне все это?

— Когда в коде программы объявляется переменная, ей выделяется кусочек ещё не использованной памяти. Обычно это несколько байт. При объявлении переменной также нужно указать тип информации, которую программа будет хранить в ней: числа, текст, или другие данные. Для удобства каждой переменной задаётся уникальное имя.

— Т.е. переменная – это имя и тип или кусок памяти и какое-то значение?

— Все вместе. Вот посмотри на несколько примеров.

Код Пояснение
1
String s;
Эта строчка создаст переменную по имени s с типом хранимых в ней данных — текст (String — строка).
Мы не можем объявить другую переменную с таким же именем в этой же функции или классе.
2
String s2 = "I'm Diego";
Эта строчка создаст переменную по имени s2 с типом данных текст (строка) и сразу занесёт в неё значение "I'm Diego".
3
int a;
Создаём переменную по имени a с типом хранимых в ней данных – целое число (Integer, сокращённо int).
3
int b = 4;
Создаём переменную по имени b с типом хранимых целых чисел (int). В переменную сразу заносится значение 4.

— Вот тебе несколько задачек от Диего. Решай понемногу.