1. Yaddaşın quruluşu
Hər bir kompüterin əməli yaddaşı var. Bu nədir, hansı xüsusiyyətlərə malikdir və ən əsası, bundan bizə nə fayda var?
Hər bir proqram (Java-da yazılmış proqramlar da daxil olmaqla) icra olunmazdan əvvəl əməli yaddaşa yüklənir. Əməli yaddaşda proqramın kodu (prosessor tərəfindən icra olunan) və proqramın məlumatları (proqramın özü tərəfindən yaddaşa yerləşdirilən) saxlanılır.
Bəs əməli yaddaş nədir və nəyə oxşayır?
Excel təsəvvür edin 😎 Excel-in səhifəsi xanalardan ibarətdir, və hər bir xananın öz unikal nömrəsi var (A1
, A2
, ... B1
, B2
). Xananın nömrəsini bilsək, oraya hər hansı bir dəyəri yaza və ya orada saxlanılan dəyəri əldə edə bilərik. Kompüterin yaddaşı da buna çox bənzəyir.
Proqram və onun məlumatları iş zamanı yaddaşda saxlanılır. Kompüterin bütün yaddaşı kiçik xanalar şəklində – baytlar kimi təqdim olunur. Hər bir xananın öz unikal nömrəsi var – 0
, 1
, 2
, 3
, ...; (nömrələmə sıfırdan başlayır). Xananın nömrəsini bilmək, bizə o xanaya məlumat qeyd etməyə imkan verir. Və ya orada saxlanan məlumatları götürmək imkanı yaradır. Bəzi xanalar proqramın kodunu – prosessorun komandalar dəstini saxlayır, digərləri isə proqramın məlumatlarını. Xananın nömrəsinə həmçinin xananın adresi deyilir.
Prosessor yaddaşa yüklənmiş proqramın komandalarını icra etməyi bacarır. Demək olar ki, prosessorun bütün komandaları bunlardır: bəzi xanalarından məlumatları götür → onlarla nəsə et → nəticəni digər xanalara yerləşdir
Sadə komandaların yüzlərcəsini birləşdirərək, mürəkkəb və faydalı komandalar əldə edirik.
Proqram kodunda dəyişən elan edildikdə, ona hələ istifadə olunmamış yaddaşın bir hissəsi ayrılır. Adətən bu bir neçə baytdır. Dəyişəni elan edərkən mütləq proqramın burada hansı tip məlumatları saxlayacağını qeyd etmək lazımdır: rəqəmlər, mətn və ya digər məlumatlar. Axı, məlumatların tipini bilmədən, dəyişən üçün hansı ölçüdə yaddaş bloku ayrılacağını təyin etmək mümkün deyil.
Kompüter texnologiyasının ilk dövrlərində proqramlar sadəcə yaddaş xanasının nömrələri ilə işləyirdi, amma sonradan proqramçılar üçün rahatlıq yaratmaq məqsədilə xanalar üçün adlar verməyə başladılar. Unikal dəyişən adı ilk növbədə proqramçılar üçün rahatlıqdır: proqram iş zamanı nömrələrlə də rahatlıqla öhdəsindən gələ bilərdi.
2. Yaddaşdakı dəyişənlər
Java-da tam rəqəmləri saxlamaq üçün 4 data tipi var. Bunlar byte
, short
, int
və long
-dur.
Tip | Ölçü, bayt | Adın mənşəyi |
---|---|---|
byte |
1 |
Byte, çünki 1 bayt yaddaş tutur |
short |
2 |
Short Integer ifadəsinin qısaldılması |
int |
4 |
Integer ifadəsinin qısaldılması |
long |
8 |
Long Integer ifadəsinin qısaldılması |
Həmçinin, Java-da 2 ədəd onluq data tipi var — float və double:
Tip | Ölçü, bayt | Adın mənşəyi |
---|---|---|
float |
4 |
Floating Point Number ifadəsinin qısaldılması |
double |
8 |
Double Float ifadəsinin qısaldılması |
Hər dəfə proqramın icrası dəyişən yaradılması komandasına çatdıqda, həmin dəyişən üçün kiçik bir yaddaş sahəsi (ölçüsü dəyişənin tipindən asılıdır) ayrılır.
Java proqramlarına yaddaşa birbaşa müraciət etmək qadağandır. Yaddaşla iş yalnız Java maşını vasitəsilə həyata keçirilir.
3. String
Tipi Yaddaşda
String
tipi böyük həcmli məlumatları saxlaya bilər, buna görə bu sadəcə bir məlumat tipi deyil, tam hüquqlu bir classdır.
String
tipli məlumatlar (mətn) xüsusi bir obyektə yerləşdirilir, onun üçün yaddaş ayrılır və həmin obyektin adresi dəyişənə yerləşdirilir, bunun üçün də yaddaş ayrılır.
a
dəyişəni int
tipinə aiddir, 4
bayt yer tutur və 1
dəyərini saxlayır.
b
dəyişəni int
tipinə aiddir, 4
bayt yer tutur və 10,555
dəyərini saxlayır. Vergül ədədi dəyərin ondalıq hissəsi deyil, rəqəmlərin ayırıcı işarəsidir. Ondalığı nöqtə ilə ayrılır.
d
dəyişəni double
tipinə aiddir, 8
bayt yer tutur və 13.001
dəyərini saxlayır.
str
dəyişəni String
tipinə aiddir, 4
bayt yer tutur və G13
dəyərini saxlayır — mətn saxlayan obyektin ilk hücrəsinin adresi.
String
tipli obyekt (mətn saxlayan) yaddaşın ayrıca blokunda saxlanılır. Onun ilk hücrəsinin adresi str
dəyişənində saxlanılır.
4. Niyə proqramlaşdırmada hər şey sıfırdan nömrələnir
İnsanlar çox vaxt təəccüblənirlər ki, niyə proqramlaşdırmada demək olar ki, hər yerdə sıfırdan hesablamaq qəbul olunub. Məsələ burasındadır ki, sıfırdan hesablamanın daha rahat olduğu çoxlu vəziyyətlər var (baxmayaraq ki, 1
-dən hesablamağın daha rahat olduğu vəziyyətlər də var).
Belə vəziyyətlərin ən sadəsi – yaddaşın ünvanlanmasıdır. Əgər dəyişəniniz üçün 4
bayt yaddaş ayrılıbsa və sizin X
– birinci baytın ünvanıdırsa, onda bütün baytların ünvanları nə olacaq? X+0
, X+1
, X+2
, X+3
. Və beləliklə, artıq 0
, 1
, 2
, 3
indeksləri ilə baytlar qrupunu almışıq.
Hər hansı bir məlumat blokunun daxilində nisbi ünvana baxarkən həmişə sıfırdan nömrələmə alırıq. Bu, sıfırdan hesablamanın ilk və ən yayılmış səbəbidir.
GO TO FULL VERSION