1. Stringdizi

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

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]);
}
Bir Scannernesne 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 intile değiştirmek zorunda kaldık . StringPekala, dizgiyi klavyeden okurken, yöntemi de nextInt()ile değiştirdik nextLine().


2. Stringbellekteki dizi

Ve bir tane daha yararlı gerçek. 3 resim düşünelim:

Resim 1. Bir Stringnesne bellekte nasıl düzenlenir:

Bellekteki dizi dizisi

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 Stringdeğişken, adresi (referans) metni depolayan bir nesneye saklar.

Resim 2. Bir tamsayı dizisinin bellekte nasıl düzenlendiği:

Bellek 2'deki dize dizisi

Bu resim de tanıdık.

Resim 3. Dizi dizisi bellekte nasıl düzenlenir:

Bir String 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, Stringdizi nesnesinin kendisine sahibiz.

Ve sağda, bazı metinleri saklayan dize nesneleri var.

Dizinin hücreleri, Stringdizelerin kendisini (String nesnelerinin metni) saklamaz. Bunun yerine adreslerini (onlara yapılan referansları) saklarlar. Aynı şekilde, Stringdeğişkenler dize nesnelerinin adreslerini (metnin depolandığı yer) depolar.

Dizi hücrelerini karşılaştırırken bunu göz önünde bulundurun :

String[] array = new String[10];

array[1] = "Hello";
array[2] = array[1];
array[3] = new String("Hello");
// Compare
array[1] == array[2];
array[1] == array[3];
array[1].equals(array[3]);
array[1].equalsIgnoreCase(array[3]);
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"};