JavaRush /Kurslar /All lectures for AZ purposes /Müxtəliflərlə İrəli Səviyyədə İşləmək

Müxtəliflərlə İrəli Səviyyədə İşləmək

All lectures for AZ purposes
Səviyyə , Dərs
Mövcuddur

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 console = new Scanner(System.in);
String[] array = new String[10];
for (int i = 0; i < 10; i++)
{
   array[i] = console.nextLine();
}
for (int i = 9; i >= 0; i--)
{
   System.out.println(array[i]);
}
Scanner obyektini yaradırıq
10 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:

Müxtəlif String yaddaşda

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:

Müxtəlif String yaddaşda

Bu şəkil də tanınır.

Şəkil 3. Sətirlərdən ibarət massiv yaddaşda necə yerləşir:

String 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:

String[] array = new String[10];
 array[1] = "Salam";
array[2] = array[1];
array[3] = new String("Salam");
// müqayisə edirik
array[1] == array[2];
array[1] == array[3];
array[1].equals(array[3]);
array[1].equalsIgnoreCase(array[3]);
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"};

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION