1. String
tipli massiv
Gəlin qısaca String
tipli massiv haqqında danışaq.
Dediyimiz kimi, massiv hər hansı bir tipdə ola bilər. Bu o deməkdir ki, String
tipli massiv yarada bilərik. Əgər bizdən "10 sıranı klaviaturadan daxil edib onları tərs sırayla ekrana çıxarmaq" tələb olunsaydı, kod belə görünərdi:
|
Scanner obyektini yaradırıq10 elementli obyekt-massiv yaradırıq 0-dan 9-a qədər dövr Klaviaturadan sıranı oxuyuruq və onu növbəti massiv hüceyrəsində saxlayırıq 9-dan 0-a qədər dövr Növbəti massiv hüceyrəsini ekrana çıxarırıq |
Kod demək olar ki, dəyişməyib! Sadəcə massiv yaradarkən int
tipini String
ilə dəyişmək, və klaviaturadan sətir oxuma metodunu nextInt()
-dən nextLine()
ilə dəyişmək lazım oldu.
2. String
tipli massiv yaddaşda
Və bir maraqlı fakt. 3 şəkilə nəzər salaq:
Şəkil 1. String
obyekti yaddaşda necə yerləşir:
Bu şəkil əvvəlki dərslərdən götürülüb.
Nəzərinizə çatdırmaq istərdik ki, sətirin mətni birbaşa dəyişəndə saxlanılmır: onun üçün ayrıca yaddaş bloku ayrılır. String
tipli dəyişəndə isə mətnin obyektinə olan adres (link) saxlanılır.
Şəkil 2. Tam ədədlərdən ibarət massiv yaddaşda necə yerləşir:
Bu şəkil də tanınır.
Şəkil 3. Sətirlərdən ibarət massiv yaddaşda necə yerləşir:
Solda String[]
tipli dəyişən-massiv (obyekt-massivin ünvanını saxlayır) görürük.
Ortada - String
tipli obyekt-massiv.
Sağda - müəyyən mətnləri saxlayan obyektsətirlər.
String
tipli obyekt-massivin hüceyrələrində məhz sətirlərin (mətnlərin) adresləri (linklər) saxlanılır. Bu, String
tipli dəyişənlərdə mətnlərin (sətirlərin) adreslərinin saxlanması ilə eynidir.
Bu faktı nəzərə alın, massivin hüceyrələrini müqayisə edərkən:
|
10 sıradan ibarət massiv yaradırıq Dəyərləri massivin içinə daxil edirik true (ünvanlar bərabərdir)false (ünvanlar bərabər deyil)true (sətirlər bərabərdir)true (sətirlər yenə də bərabərdir) |
3. Javada Massivin Sürətli İnisializasiya
Massivlər - çox faydalı bir şeydir, buna görə də Java inkişafçıları onlarla işə mümkün qədər rahat etmək üçün çalışdılar.
Onların ilk etdikləri - massivin inisializasiyasını, ilkin dəyərlər daxil edilməsini asanlaşdırmaq oldu.
Çünki çox vaxt, proqramın hardansa oxuduğu verilənlərdən əlavə, onun daxilindəki verilənlərə də ehtiyac var. Məsələn, bizə ilin aylarının uzunluqlarını massivin içinə saxlamaq lazımdır. Kod belə görünə bilər:
int[] months = new int[12];
months[0] = 31; // yanvar
months[1] = 28; // fevral
months[2] = 31; // mart
months[3] = 30; // aprel
months[4] = 31; // may
months[5] = 30; // iyun
months[6] = 31; // iyul
months[7] = 31; // avqust
months[8] = 30; // sentyabr
months[9] = 31; // oktyabr
months[10] = 30; // noyabr
months[11] = 31; // dekabr
Ancaq Java yaradanlara təşəkkür edərək, bunu daha qısa bir şəkildə yaza bilərsiniz:
// ilin aylarının uzunluqları
int[] months = new int[] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
Sadəcə olaraq massivin bütün dəyərlərini vergül ilə ayıraraq qeyd etmək olar!
Rahata bax, elə deyil? Ancaq bu qədər də deyil.
Məlum olur ki, tərtibatçı massivin növünü dəyişən-massivin tipinə əsasən təyin edə bilər. Massivin uzunluğunu təyin etmək üçün isə sadəcə olaraq əyri mötərizə içindəki elementlərin sayını saymaq olar.
Buna görə bu kodu daha da qısa yazmaq mümkündür:
// ilin aylarının uzunluqları
int[] months = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
Elə deyilmi? 🙂
Belə bir yazı "massivin sürətli inisializasiyası" adlanır. O, yalnız int
tipi üçün uyğun deyil...
// ilin aylarının adları
String[] months = { "Yanvar", "Fevral", "Mart", "Aprel", "May", "İyun", "İyul", "Avqust", "Sentyabr", "Oktyabr", "Noyabr", "Dekabr"};
GO TO FULL VERSION