1. Как е организирана паметта

Всеки компютър има вътрешна памет . Какво е? Какви свойства притежава? И най-важното How ни е от полза?

Всяка програма (включително програми , написани на Java) се зарежда в основната памет, преди да бъде изпълнена. Основната памет съдържа програмния code (който се изпълнява от процесора), Howто и програмните данни (т.е. данните, които самата програма поставя в паметта).

Какво е паметта и Howва е тя?

Електронната table в Exсel се състои от клетки . Всяка клетка има свой собствен уникален идентификатор ( A1, A2, ... B1, B2). Ако знаете идентификатора на клетка , винаги можете да запишете няHowва стойност в нея or да получите Howвато и да е стойност, която се съхранява там. Компютърната памет е организирана по много подобен начин.

Програмата и програмните данни се съхраняват в паметта , когато програмата работи. Цялата компютърна памет се състои от малки клетки, наречени byteове . Всяка клетка има уникален идентификатор or номер, свързан с нея: 0, 1, 2, 3, ...; (номерацията започва от нула). Ако знаем номера на клетка , можем да запазим данни в нея. Или вземете данни от него. Някои клетки съхраняват codeа на програмата, т.е. набора от команди за процесора. Други съхраняват данните, използвани от програмата. Номерът на клетката се нарича още address на клетката .

Процесорът знае How да изпълнява команди, които са заредени в паметта. Почти всички команди на процесора са нещо като вземане на данни от някои клетки , направете нещо с тях и след това изпращане на резултата до други клетки .

Комбинираме стотици прости команди, за да получим сложни и полезни команди.

Когато една променлива е декларирана в codeа, за нея се разпределя част от паметта , която още не се използва. Обикновено това са няколко byteа. Декларирането на променлива изисква да посочите типа информация, която програмата ще съхранява в нея: числа, текст or други данни. В края на краищата, ако не знаете типа информация, която да се съхранява, тогава не е ясно колко голям блок памет трябва да бъде разпределен за променливата.

В зората на компютърната ера програмите работеха директно с addressи на паметта, но след това за удобство на програмистите клетките започнаха да получават имена. Уникалното име на променлива е преди всичко за удобство на програмистите, тъй като програмата обработва добре обикновените addressи на паметта .


2. Променливи в паметта

Като цяло Java има 4 типа данни за съхраняване на цели числа. Това са byte, shortи int.long

Тип Размер в byteове Произход на името на типа
byte 1 byte е умишлено повторно изписване на bite, за да се избегне объркване с bit
short 2 Съкратено от Short Integer
int 4 Съкращение от Integer
long 8 Съкратено от дълго цяло число

Освен това Java има 2 типа за реални числа: float и double:

Тип Размер в byteове Произход на името на типа
float 4 Съкратено от Floating Point Number
double 8 Съкратено от Double Float

Всеки път, когато изпълнението на програмата достигне до команда за създаване на променлива, за нея се разпределя малък блок памет (размерът зависи от типа на променливата).

Адресът на променливата е addressът на първата клетка от разпределения блок памет.

Java програмите нямат право да осъществяват директен достъп до паметта. Всяка работа с паметта се извършва само чрез виртуалната машина на Java.


3. StringТипът в паметта

Типът Stringможе да съхранява големи количества данни, което означава, че не е просто тип данни, а пълноценен клас.

Обектът Stringсе поставя в разпределен блок памет, който съхранява address на друг блок памет, в който се съхранява текстът.

Променливата int aзаема 4byteове и съхранява стойността 1.

Променливата int bзаема 4byteове и съхранява стойността 10,555. Използваме запетая като разделител на хилядите. И използваме точка като десетичен разделител.

Променливата double dзаема 8byteове и съхранява стойността 13.001.

Променливата String strзаема 4byteове и съхранява стойността G13, която е addressът на първата клетка от блока памет, съдържащ текста.

Текстът на String objectсе съхранява в отделен блок памет. Адресът на първата му клетка се съхранява в strпроменливата.


4. Защо номерирането започва с нула в програмирането

Хората често се чудят защо програмистите почти винаги започват да броят от нула. Е, факт е, че има много ситуации, когато е по-удобно да се брои от нула (разбира се, има и ситуации, когато е по-удобно да се брои от 1).

Най-простият пример за това е addressирането на паметта. Ако на вашата променлива са разпределени 4byteове памет и знаете, че това Xе addressът на първия byte, тогава Howви са addressите на всеки byte? , , , . Колкото и просто, имаме група от byteове, до които може да се стигне с индекси , , , .X+0X+1X+2X+30123

Когато мислим за относителен address в рамките на блок от данни, индексирането от нула е това, което има смисъл. Това е основната причина да броим от нула .