1. Massivlərin yaddaşda saxlanması
Keçmiş nümunələrdəki şəkillər bir qədər dəqiq deyildi.
Massivlər yaradılan zaman (eləcə də sətirlər yaradılan zaman) yaddaşda iki blok ayrılır: biri massivin (konteynerin) özünü saxlamaq üçün, digəri isə onun ünvanını saxlayan dəyişəni saxlamaq üçün. Daha dəqiq vəziyyət aşağıdakı şəkildə göstərilib:

Yaşıl rənglə 10 elementdən ibarət olan int tipli massiv və yaddaşda int tipli massiv üçün ünvan (referans) saxlayan int[] tipli dəyişən göstərilib.
Müqayisə üçün mavi rənglə 199 dəyərini saxlayan sadə int tipli dəyişən göstərilib.
Bunun sətirlərin yaddaşda saxlanmasına bənzəmədiyini düşünmürsünüz?
Düzdür, sətirlər kimi. Eləcə də massiv tipli dəyişənlər bir-birinə mənimsədilə bilər:
| Kod | İzahat |
|---|---|
|
10 elementdən ibarət int tipli massiv yaradırıq.2 indeksli hüceyrəyə 4 dəyərini yazırıq.7 indeksli hüceyrəyə 9 dəyərini yazırıq.b dəyişəninə a dəyişənindəki ünvanı mənimsədirik.İndi a və b yaddaşda eyni obyektə-massivə işarə edir.Massiv obyektinin 9 indeksli hüceyrəsinə, 2 indeksli hüceyrədəki dəyər (4) ilə 7 indeksli hüceyrədəki dəyərin (9) cəmini yazırıq. |
Eyni zamanda massiv obyekti olduğu yerdə qalacaq, a və b dəyişənləri isə yaddaşda eyni obyektə (massivə) aid olan ünvanı saxlayacaq. Şəkilə baxın:
2. Massivlərlə daha ətraflı iş
Massiv istənilən tipdən yaradılıb istifadə edilə bilər. Bunun üçün sadəcə tip adından sonra kvadrat mötərizələr yazmaq lazımdır. Massivin yaradılmasının ümumi görünüşü belə olacaq:
tip[] ad = new tip[say];
Burada tip — massivdə saxlanacaq elementlərin (hüceyrələrin) tipi, ad — massivə müraciət üçün istifadə olunan dəyişənin adı, say isə massivdəki hüceyrələrin sayıdır.
Yuxarıdakı nümunədə kanonik forma təqdim olunub: massiv dəyişənin yaradılması və massiv obyektinin yaradılması. Əslində, bunlar iki ayrı konstrukdur.
Massiv dəyişəni və massiv obyektini ayrı-ayrılıqda yaratmaq mümkündür:
tip[] ad;
ad = new tip[say];
Və daha bir vacib məqam:
Nümunələr:
| Kod | İzah |
|---|---|
|
n elementdən ibarət massiv yaradılması |
|
203 elementdən ibarət massiv yaradılması |
|
|
0..99 aralığında deyil), proqram
ArrayIndexOutOfBoundsException səhvi ilə qəza edəcək.
3. Massivin uzunluğu
Əvvəlki nümunədə gördüyünüz kimi, ayrıca massiv tipli dəyişən yarada və sonra kodda ona dəyər (massiv obyektinə istinad) təyin edə bilərsiniz. Hətta belə etmək olar:
| Kod | İzah |
|---|---|
|
Massiv dəyişəni int[] tipində yaradılıra dəyişəni 10-dan kiçikdirsə,10 elementdən ibarət massiv yaradılır.Əks halda 20 elementdən ibarət massiv yaradılır. |
Belə massivlə necə işləmək olar? Necə bilmək olar ki, orda neçə element var?
Bunun üçün massivdə xüsusi bir property (dəyişən) mövcuddur — length. Massivin uzunluğunu bu ifadə ilə bilmək olar:
array.length;
Burada array — massiv dəyişənin adı, length isə massiv obyektinin property-sinin adıdır. length property-nin qiymətini dəyişmək olmaz: length property-ni başqa dəyişənlərə təyin etmək olar, amma ona heç nə təyin etmək olmaz (proqram sadəcə kompilyasiya olunmayacaq).
Öncəki nümunəni bu cür davam etdirmək olar:
| Kod | İzah |
|---|---|
|
Massiv dəyişəni int[] tipində yaradılıra dəyişəni 10-dan kiçikdirsə,10 elementdən ibarət massiv yaradılır.Əks halda 20 elementdən ibarət massiv yaradılır.Massivin bütün elementlərini dövr etmək: 0-dan başlayaraq array.length — 1 uzunluğa qədər |
4. Java'da array'lər haqqında faktları ümumiləşdirək
Gəlin array'lər haqqında məlum faktları ümumiləşdirək:
Fakt 1. Array bir çox hücrədən ibarətdir.
Fakt 2. Konkret bir hücrəyə giriş üçün onun nömrəsini göstərmək lazımdır.
Fakt 3. Bütün hücrələr bir növdədir.
Fakt 4. Bütün hücrələr üçün başlanğıc dəyəri — 0 və null (əgər hücrədə address saxlanırsa), false (boolean tipi üçün). Varsayılan dəyərlər haqqında daha çox məlumatı bu mühazirədə tapa bilərsiniz.
Fakt 5. String[] list – sadəcə bir dəyişənin elanıdır: özündə konteyner (obyekt-array) hələ yaradılmamışdır. Onunla işləmək üçün əvvəlcə array (konteyner) yaradılmalı və həmin dəyişənə təyin olunmalıdır, daha sonra isə ondan istifadə edilə bilər. Aşağıdakı nümunəyə baxın.
Fakt 6. Biz obyekt-array (konteyner) yaradanda onun uzunluğunu - neçə hücrədən ibarət olduğunu göstərməliyik. Bu aşağıdakı əmrlə edilir: new TypeName[n];
Fakt 7. Array'in uzunluğunu .length xüsusiyyəti vasitəsilə öyrənmək olar.
Fakt 8. Array yaradıldıqdan sonra onun elementlərinin növünü və ya sayını dəyişmək mümkün deyil.
| Kod | İzah |
|---|---|
|
s null-lə bərabərdirlist null-lə bərabərdir |
|
list dəyişəni 10 elementdən ibarət string array'ə istinadın saxlayır.n 10-a bərabərdir. |
|
İndi |
|
İstisna (proqram xətası) generasiya olunacaq — proqram qəza ilə bitəcək. list boş istinad saxlayır — null |
|
İstisna (proqram xətası) generasiya olunacaq — array həddini aşmaq. Əgər list 10 element/hücrədən ibarətdirsə, onların icazə verilən indeksləri: 0 1 2 3 4 5 6 7 8 9 — cəmi 10 ədəddir. |
GO TO FULL VERSION