1. String
dizi
Diziler hakkında kısaca bilgi vermek istiyorum String
.
Daha önce de söylediğimiz gibi, bir dizi herhangi bir türde olabilir. Bu, bir s dizisi oluşturabileceğiniz anlamına gelir String
. "Klavyeden 10 satır okuyan ve bunları ters sırayla görüntüleyen" bir program yazmak isteseydik, kod şöyle görünürdü:
|
Bir Scanner nesne oluşturun 10 elemanlı bir dizi nesnesi oluşturun 0'dan 9'a kadar döngü Klavyeden bir dize okuyun ve dizinin bir sonraki hücresine kaydedin 9'dan 0'a kadar döngü Dizideki sonraki hücreyi görüntüleyin |
Kod zar zor değişti! Diziyi oluştururken yalnızca int
ile değiştirmek zorunda kaldık . String
Pekala, dizgiyi klavyeden okurken, yöntemi de nextInt()
ile değiştirdik nextLine()
.
2. String
bellekteki dizi
Ve bir tane daha yararlı gerçek. 3 resim düşünelim:
Resim 1. Bir String
nesne bellekte nasıl düzenlenir:
Bu resim önceki derslerden alınmıştır.
Lütfen dize metninin doğrudan değişkende saklanmadığını unutmayın: bunun için ayrı bir bellek bloğu tahsis edilir. Bir String
değişken, adresi (referans) metni depolayan bir nesneye saklar.
Resim 2. Bir tamsayı dizisinin bellekte nasıl düzenlendiği:
Bu resim de tanıdık.
Resim 3. Dizi dizisi bellekte nasıl düzenlenir:
Solda, türü String[]
(bir dizi nesnesinin adresini saklayan) olan bir dizi değişkeni görüyoruz.
Ortada, String
dizi nesnesinin kendisine sahibiz.
Ve sağda, bazı metinleri saklayan dize nesneleri var.
Dizinin hücreleri, String
dizelerin kendisini (String nesnelerinin metni) saklamaz. Bunun yerine adreslerini (onlara yapılan referansları) saklarlar. Aynı şekilde, String
değişkenler dize nesnelerinin adreslerini (metnin depolandığı yer) depolar.
Dizi hücrelerini karşılaştırırken bunu göz önünde bulundurun :
|
10 dizgiden oluşan bir dizi oluşturun Diziye değerler koyun true (referanslar eşittir) false (referanslar eşit değildir)true (dizeler eşittir) true (dizeler hala eşittir) |
3. Java'da hızlı dizi başlatma
Diziler çok kullanışlıdır, bu nedenle Java'nın yaratıcıları onlarla çalışmayı olabildiğince kolay hale getirmeye çalıştı.
Yaptıkları ilk şey, bir dizinin başlangıç değerlerini sağladığınız süreç olan dizi başlatmayı basitleştirmek oldu.
Sonuçta, bir yerden okunan verilere ek olarak, bir programın çalışması için genellikle kendi dahili verilerine de ihtiyacı vardır. Örneğin, her ayın uzunluklarını bir dizide saklamamız gerektiğini varsayalım. Kod şöyle görünebilir:
int[] months = new int[12];
months[0] = 31; // January
months[1] = 28; // February
months[2] = 31; // March
months[3] = 30; // April
months[4] = 31; // May
months[5] = 30; // June
months[6] = 31; // July
months[7] = 31; // August
months[8] = 30; // September
months[9] = 31; // October
months[10] = 30; // November
months[11] = 31; // December
Ancak Java'nın yaratıcıları sayesinde bunu daha özlü yazmanın bir yolu var:
// Lengths of months of the year
int[] months = new int[] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
Dizinin tüm değerlerini virgülle ayırarak kolayca listeleyebilirsiniz!
Uygun, değil mi? Ama hepsi bu kadar değil.
Olduğu gibi, derleyici, dizinin değerlerinin türüne göre kabın türünü (dizi nesnesi) belirleyebilir. Ve dizinin uzunluğunu belirlemek için kaşlı ayraçlar içinde yazılan öğelerin sayısını saymak önemsizdir.
Bu, bu kodun daha da kısa yazılabileceği anlamına gelir:
// Lengths of months of the year
int[] months = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
Güzel bir şey, değil mi? 🙂
Buna "hızlı dizi başlatma" denir. Bu arada, bu diğer türler için işe yarar int
...
// Names of months of the year
String[] months = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November ", "December"};
GO TO FULL VERSION