Java'da iki boyutlu bir dizi nasıl çevrilir. Java'da diziler. Tek boyutlu ve çok boyutlu

  • 28.06.2019

Son güncelleme: 09.11.2018

Bir dizi, aynı türdeki bir dizi değeri temsil eder. Bir dizi bildirmek, tek bir değer depolayan normal bir değişken bildirmekle benzerdir ve bir diziyi bildirmenin iki yolu vardır:

veri_türü dizi_adı; // veri türü dizi_adı;

Örneğin, bir sayı dizisi tanımlayalım:

İç sayılar; int sayılar2;

Diziyi bildirdikten sonra, onu başlatabiliriz:

İç sayılar; sayılar = yeni int; // 4 sayı dizisi

Dizi, şu yapı kullanılarak oluşturulur: new data_type [number_of_elements], burada new, parantez içinde belirtilen öğe sayısı için bellek ayıran bir anahtar sözcüktür. Örneğin, sayılar = yeni int; - bu ifade, dört int öğesinden oluşan bir dizi oluşturur ve her öğenin varsayılan değeri 0 olacaktır.

Bir dizi bildirirken de hemen başlatabilirsiniz:

Int sayıları = yeni int; // 4 sayı dizisi int nums2 = yeni int; // 5 sayı dizisi

Bu başlatma ile dizinin tüm elemanları varsayılan bir değere sahiptir. Sayısal türler (char dahil) için bu sayı 0, boolean için false ve diğer nesneler için null'dur. Örneğin, int için varsayılan 0'dır, bu nedenle yukarıdaki nums dizisi dört sıfır olacaktır.

Ancak, diziyi oluşturduğunuzda, dizi öğeleri için de belirli değerler ayarlayabilirsiniz:

// bu iki yöntem eşdeğerdir int sayılar = new int (1, 2, 3, 5); int sayılar2 = (1, 2, 3, 5);

Bu durumda, küme parantezleri içindeki eleman sayısı ile hesaplandığından, dizinin boyutunun köşeli parantez içinde gösterilmediğine dikkat edilmelidir.

Bir dizi oluşturduktan sonra, dizi değişkeninin adından sonra köşeli parantez içinde verilen dizine göre herhangi bir elemanına başvurabiliriz:

Int sayıları = yeni int; // dizi elemanlarının değerlerini ayarlayın nums = 1; sayılar = 2; sayılar = 4; sayılar = 100; // System.out.println (sayılar) dizisinin üçüncü öğesinin değerini alın; // 4

Dizi elemanları 0'da indekslenir, bu durumda dizideki dördüncü elemana atıfta bulunmak için nums ifadesini kullanmamız gerekir.

Ve sadece 4 eleman için tanımlanmış bir dizimiz olduğu için, örneğin altıncı elemana başvuramayız: nums = 5; ... Bunu yapmaya çalışırsak, bir hata alırız.

dizi uzunluğu

Dizilerin sahip olduğu en önemli özellik, bir dizinin uzunluğunu yani elemanlarının sayısını döndüren length özelliğidir:

Int sayılar = (1, 2, 3, 4, 5); int uzunluk = sayı.uzunluk; // 5

Son dizin genellikle bilinmez ve bir dizinin son öğesini almak için bu özelliği kullanabiliriz:

Int son = sayılar;

Çok boyutlu diziler

Daha önce, aynı türden bir zincir veya bir dizi değer olarak temsil edilebilecek tek boyutlu dizileri düşündük. Ancak tek boyutlu dizilerin yanı sıra çok boyutlu da olabilirler. En ünlü çok boyutlu dizi, iki boyutlu bir diziyi temsil eden bir tablodur:

Int nums1 = yeni int (0, 1, 2, 3, 4, 5); int sayılar2 = ((0, 1, 2), (3, 4, 5));

Görsel olarak, her iki dizi de aşağıdaki gibi temsil edilebilir:

Tek boyutlu dizi nums1
2D nums2 dizisi

nums2 dizisi iki boyutlu olduğu için basit bir tablodur. Ayrıca şu şekilde de oluşturulabilirdi: int nums2 = new int; ... Köşeli parantezlerin sayısı dizinin boyutunu gösterir. Ve parantez içindeki sayılar satır ve sütun sayısı içindir. Ayrıca indisleri kullanarak dizinin elemanlarını programda kullanabiliriz:

// ikinci satırın ilk sütununun elemanını ayarla nums2 = 44; System.out.println (sayı2);

Bir 3B dizi bildirimi şöyle görünebilir:

Int sayılar3 = yeni int;

pürüzlü dizi

Çok boyutlu diziler aynı zamanda "tırtıklı diziler" olarak da gösterilebilir. Yukarıdaki örnekte, iki boyutlu dizide 3 satır ve üç sütun vardı, bu yüzden düz bir tablo elde ettik. Ancak iki boyutlu bir dizideki her bir öğeyi, farklı sayıda öğeye sahip ayrı bir diziye atayabiliriz:

Int sayıları = yeni int; sayılar = yeni int; sayılar = yeni int; sayılar = yeni int;

her biri için

For döngüsünün özel bir sürümü, diziler ve koleksiyonlar gibi bir dizi öğe üzerinde yineleme yapmak içindir. Diğer programlama dillerinde bulunan foreach döngüsüne benzer. Resmi beyanı:

(veri_türü değişken_adı: kapsayıcı) için (// eylemler)

Örneğin:

Int dizisi = yeni int (1, 2, 3, 4, 5); for (int i: dizi) (System.out.println (i);)

Bu durumda, int türündeki bir dizi veri bir kapsayıcı görevi görür. Daha sonra int türünde bir değişken bildirilir.

Aynı şey for'nun normal sürümüyle de yapılabilirdi:

Int dizisi = yeni int (1, 2, 3, 4, 5); for (int ben = 0; ben< array.length; i++){ System.out.println(array[i]); }

Aynı zamanda, for döngüsünün bu sürümü for (int i: array) sürümünden daha esnektir. Özellikle, bu sürümde öğeleri değiştirebiliriz:

Int dizisi = yeni int (1, 2, 3, 4, 5); for (int ben = 0; ben

Çok boyutlu diziler üzerinde döngü

int sayılar = yeni int ((1, 2, 3), (4, 5, 6), (7, 8, 9)); for (int ben = 0; ben< nums.length; i++){ for(int j=0; j < nums[i].length; j++){ System.out.printf("%d ", nums[i][j]); } System.out.println(); }

İlk olarak, satırlar üzerinde yineleme yapmak için bir döngü oluşturulur ve ardından ilk döngü içinde, belirli bir satırın sütunları üzerinde yineleme yapmak için bir iç döngü oluşturulur. Benzer şekilde, çok sayıda boyuta sahip 3B diziler ve kümeler üzerinde yineleme yapabilirsiniz.

Belki de Java dili teorisindeki son çok hoş ve ilginç olmayan, ancak çok önemli ve faydalı bir konuya başlayalım - diziler. Ayrıca, daha pratik görevler için kullanılabilecek daha ilginç ve heyecan verici materyaller olacak. Ancak Java'nın ilginç kısmına başlamak için, dilin temeli olan ve onsuz programlamayı öğrenmenin imkansız olduğu ilginç olmayanı öğrenmeniz gerekir)).

Daha önce ele aldığımız tüm konular: programlamanın temelleridir. Onların çalışmasıyla başka bir programlama diline başlayacaksınız. Diziler de bu konuyla ilgilidir. Hangi konuda programlamaya başlamaya karar verirseniz verin, diziler olmadan pek yapamazsınız. Bu nedenle, programlamada başarılı olmak istiyorsanız, bu ve geçmiş malzemeye çok iyi hakim olmanızı tavsiye ederim.

Şimdi dizilere geçelim.

Dizi Aynı türden verileri depolamak için tasarlanmış bir veri yapısıdır.

Diyelim ki 5 tamsayı değişkeni oluşturmanız ve onlara bir değer vermeniz gerekiyor. Nasıl yapacaksın? Dizileri bilmeden büyük olasılıkla şöyle yazmaya başlayacaksınız: int a = 2, b = 3, c = 5, d = 21, e = 2;

Cephaneliğinizde diziler gibi bir veri türü varsa, şöyle yazabilirsiniz: int a = (2, 3, 5, 21, 2);

Bu, bu verileri işlerken çok kullanışlıdır. Örneğin, şimdi her değişkene 3 eklemeniz gerekiyor.İlk bildirim yöntemini kullandıysanız, böyle bir işlem çok zamanınızı alacaktır. Dizilere sahipken ve cephaneliğimizde, monoton kodlara başvurmadan büyük miktarda veriyi işleyebiliriz.

Diziyi kullanmadan önce şunları yapmanız gerekir:

  1. duyuru;
  2. Oluşturmak;
  3. Başlat.

Bu prosedürü unutmayın ve asla ihlal etmeyin.
Dizi bildirimi:
karakter;
dize p;
veya
karakter;
dize p;
Diziler oluşturma:
s = yeni karakter;
p = yeni Dize;

Dizideki eleman sayısı köşeli parantez içinde belirtilir. Bu miktar yasaktır daha sonra değişecek.
Dizileri başlatma:
oluşturulduktan sonra - eleman eleman: int a = (1,2,3,4,5);
bildirirken / oluştururken - dizinin tamamı: int b = new int (2, 4, 6) ;.

Dizi açıkça başlatılmazsa, oluşturulduktan sonra tümü
elemanlar eşittir:
0 - sayısal dizilerde
false - boole dizilerinde
null - nesne dizilerinde

Dizi sınırları:
Tüm dizilerin bir uzunluk alanı vardır - dizinin uzunluğu (eleman olarak)
İlk eleman her zaman indeks 0'dır (değerle karıştırılmamalıdır).
Son eleman her zaman indeks uzunluğu-1'dedir.

Bu kadar teoriden sonra, bence biraz pratik gerekiyor:

    genel sınıf ArraysInJava (

    int intArray; // dizi bildirimi

    intArray = yeni int [10]; // dizi başlatma

    intArray [0] = 1; // dizinin ilk elemanına 1 değeri verildi

    intArray [1] = 2; // ikinci değer 2

    intArray [6] = 7; // aldığımız dizi değerlerinin geri kalanı

    // hiçbir değer belirtilmemiş, varsayılan olarak 0 olacak

    // başlatıldığında köşeli parantez içindeki değerle eşleşir.

    for (int ben = 0; ben< intArray.length ; i++ ) {

    for (int ben = 0; ben< intArray.length ; i++ ) {

    intArray [i] = 45; // dizinin her elemanı değiştirilebilir

Kodu çalıştırmanın sonucu:

Dikkate aldık Java'da tek boyutlu diziler.Şimdi sıra iki boyutlu olanlara geldi.

Tahmin edebileceğiniz gibi, iki boyutlu bir dizi, bir dizi dizisidir. Korkma. Her şey göründüğünden çok daha basit.

int ikiDim = new int - 4'e 4 boyutunda iki boyutlu bir diziyi bu şekilde bildirebilirsiniz. Dikey olarak 4, yatay olarak 4 öğe olacaktır. Böyle bir diziye değer atamak tek boyutlu diziye değer atamak kadar basittir: TwoDim = 3. Bu kayıt, ikinci satır (indeks 0'dan başlar) ve sütundaki dizi elemanımıza atadığımız anlamına gelecektir. 3. Resimde şöyle görünecek:

Bu arada, işte bazı örnek kodlar:

Çok boyutlu diziler herhangi bir sayıda boyuta sahip olabilir. Bildirmek, başlatmak ve onlarla çalışmak tek boyutlu dizilerle aynıdır. Tek boyutlu ve iki boyutlu dizilerle çalışmayı öğrenirseniz, üç boyutlu ve üstü ile ilgili herhangi bir sorun olmayacaktır.

Başka bir örnek. Daha doğrusu görev. Sayıları şu sırayla gösteren bir uygulama düşünmenizi ve yazmanızı istiyorum:

İpucu: System.out.println (); - yeni bir satıra yazdırırken: System.out.print () - aynı satıra yazdırır.

Çözüme bakmadan önce, kendiniz yazmayı deneyin. Bu, kapsanan malzemeyi büyük ölçüde güçlendirir.

Ustalaşmamış olanlar için bir çözüm öneriyorum. Üzülme. Programlama zaman ve sabır ister.

    genel sınıf FormatMatrixPrint (

    int boyut = 5;

1. Diziler nedir?

Bu, hemen hemen her programlama dilinde bulunan ve aynı türden bir grup nesneyi ortak bir ad kullanarak tanımlamanıza izin veren özel bir yapıdır.

Diyelim ki beş kedili evsiz bir hayvan barınağınız var. Her birinin adını hatırlamıyorsunuz, ancak her birinin, her bir hayvanı tanımlamanıza izin veren bir numaraya sahip bir simgesi var. Bunun beş boyutlu "mühürler" dizisi olduğunu söyleyebiliriz. Lütfen indekslemenin sıfırdan başladığını unutmayın - Java'da bu şekilde yapılır. Diziler oluşturmak mümkün olmasaydı, beş değişken bildirmek ve onlara isimler bulmak gerekirdi ki bu pek uygun değildir.

Java'da herhangi bir boyutta diziler oluşturabilirsiniz - tek boyutlu, iki boyutlu, üç boyutlu vb. En basit seçenekle başlayalım - tek boyutlu diziler.

2. Tek boyutlu diziler

Tek boyutlu diziler, aynı türdeki değişkenlerin bir listesidir. Bir dizi oluşturmak için önce gerekli türde bir dizi değişkeni bildirmeniz gerekir. Tek boyutlu bir dizi bildirmenin genel biçimi aşağıdaki gibidir:

DeğişkenAdı yazın;

nerede parametre bir çeşit taban türü olarak da adlandırılan dizi öğesinin türünü belirtir.

Örnek 1. Dizi bildirmeye bir örnek

Köşeli parantezler bir değişkenden önce veya sonra yerleştirilebilir. Ancak daha doğru seçenek, değişkenin önünde parantezleri belirtmektir - bu şekilde tür ve parantezler aynı yerdedir, bu da ilk bakışta önünüzde böyle bir tür diziniz olduğunu anlamanıza olanak tanır. sen.

Int ayGünler; çift ​​aylık Maaşlar;

2.1. Anahtar Kelime Kullanarak Dizi Başlatma yeni

Dizi bildirildiğinde, onun için henüz bir bellek ayrılmamıştır. Bir diziye bellek ayırmak için anahtar sözcüğü kullanın. yeni, bundan sonra dizi tipi tekrar belirtilir ve boyut köşeli parantez içinde:

DeğişkenAdı = yeni tür [boyut];

Bir dizi, bir satırla bildirilebilir ve başlatılabilir:

Int değerleri = yeni int;

Örnek 2. Bir dizi bildirimi örneği

Bir dizi türü bildirme örneğini düşünün int bu örnekte 12 beden. satırı çalıştırdıktan sonra int ayGünleri = yeni int 12 elemanlı bir dizi oluşturuldu. Her öğeye, belirtilen tür için varsayılan bir değer atanır. tipi için int bu sıfır. Dizinin ayrı bir elemanına atıfta bulunmak için, dizinin köşeli parantez içindeki adından sonra elemanın indeksini ayarlayın. Böylece, değerini değiştirmek veya almak için dizinin bir elemanına başvurabiliriz.

Genel sınıf Array1 (genel static void main (String args) (int ayDays = yeni int; ayDays = 31; ayDays = 28; ayDays = 31; ayDays = 30; ayDays = 31; ayDays = 30; ayDays = 31; ayDays = 31 ; ayDays = 30; ayDays = 31; ayDays = 30; ayDays = 31; System.out.println ("B Nisan" + ayGünleri + "günler.");))

2.2. Bir başlatma bloğu kullanarak bir diziyi başlatma

Örnek 3. Tek boyutlu bir diziyi başlatma örneği

Dizideki her bir öğenin değerlerini önceden biliyorsanız, diziyi başlatmak için bir blok kullanabilirsiniz. Onun yerine yeni int, küme parantezlerinde dizi öğelerinin değerleri virgülle ayrılmış olarak listelenir. Dizinin boyutu, derleyici tarafından belirtilen öğelerin sayısından çıkarılır.

Genel sınıf Array2 (genel static void main (String args) (int ayDays = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); System.out.println ("B Nisan "+ ayGünleri +" günleri. ");))

2.3. Adsız dizi

Üçüncü bir dizi bildirimi biçimi de vardır - adsız bir dizi. İki şekilde kullanılabilir. İlk olarak - diziyi bildirdiniz ve başlattınız test sonuçları dört beden , ama sonra bir nedenden dolayı değiştirilmesi gerekiyor - üç öğe içermesi gerekiyor. Diziyi başlatmak için formu yeniden kullanamazsınız - bir derleme hatası olacaktır:

Int testScores = (1, 2, 3, 4); ... testScores = (4, 7, 2); // Derleme Hatası

Ancak, bellekte yeni bir dizi oluşturacak adsız bir dizi kullanabilirsiniz. Adsız bir dizi yazma biçimi, ilk ikisinin karışımıdır:

TestScores = yeni int (4, 7, 2);

Adsız bir dizi için ikinci kullanım durumu, bir diziyi bir yönteme geçirmektir. Aşağıdaki örnekte, yöntem Yazdır girdi olarak bir dizi türü kabul eder int. Bir yöntemi çağırırken, argüman olarak isimsiz bir dizi iletilebilir.

Örnek 4. Adsız dizi örneği

public class Array3 (public static void main (String args) (int testScores = (1, 2, 3, 4); for (int element: testScores) (System.out.print (element + "");) System.out .println (); testScores = new int (4, 7, 2); for (int öğesi: testScores) (System.out.print (eleman + "");) System.out.println (); print (yeni int (4, 6, 2, 3));) public static void print (int dizisi) (for (int element: array) (System.out.print (element + "");)))

3. Çok boyutlu diziler

Çok boyutlu diziler, dizi dizileridir.

Çok boyutlu bir dizi değişkeni bildirirken, her ek dizini belirtmek için ayrı bir köşeli parantez satırı kullanılır. Örneğin:

Int ikiD = yeni int;

Aşağıdaki şekil, 4'e 5'lik iki boyutlu bir diziyi görsel olarak nasıl temsil edebileceğinizi gösterir.Sol dizin, satırı ve sağ sütunu tanımlar.

Örnek 5. İki boyutlu dizi örneği

Aşağıdaki örnek, 4x5 iki boyutlu bir dizide değerleri nasıl ayarlayabileceğinizi gösterir. Dizeler üzerinde yineleme yapmak için bir dış döngü kullanılır için, sütunlar üzerinde yineleme yapmak için - dahili. Sonraki her öğeye bir öncekinden daha büyük bir değer atanır.

Genel sınıf TwoDArray1 (genel statik geçersiz ana (String args) (int ikiD = yeni int; int i, j, k = 0; for (i = 0; i)< 4; i++) { for (j = 0; j < 5; j++) { twoD[i][j] = k++; System.out.print(twoD[i][j] + " "); } System.out.println(); } } }

3.2 Bellekte çok boyutlu bir diziyi temsil etme

Şimdi dizinin nasıl temsil edildiğini görelim. int ikiD = yeni int; bellekte Değişken ikiD bir matrisi değil, üç elemandan oluşan bir satırı (kırmızı) gösterir. Her öğenin değeri, dört öğeli bir dizeye (mor) bir başvurudur.

Aşağıdaki resim, üç boyutlu bir dizinin nasıl depolandığını gösterir. int üçD = yeni int akılda:

Benzer şekilde, herhangi bir boyutta bir dizi bellekte saklanabilir.

Şimdiye kadar incelediğimiz iki boyutlu dizilerde, her satırdaki eleman sayısı aynıdır - çoğu zaman öyledir. Ancak bu gerekli değildir, her satır farklı sayıda öğe içerebilir. Örneğin:

Örnek 6. Farklı boyutlara sahip iki boyutlu bir dizi örneği

Böyle bir diziyi uygulayan kodu görelim. Bir diziyi bildirirken, yalnızca ilk boyut için eleman sayısını ayarlamak gerekir - int dizisi = yeni int... Böylece dizideki satır sayısını belirtiyoruz, ancak her satır için bellek ayırmıyoruz. Daha sonra dizinin her satırı için ayrı bellek ayırıyoruz. Örneğin, dizini sıfır olan dize 1 boyutunda olacaktır - dizi = yeni int.

Genel sınıf TwoDArray2 (genel statik geçersiz ana (String args) (int dizi = yeni int; dizi = yeni int; dizi = yeni int; dizi = yeni int; dizi = yeni int; int i, j, k = 0; for ( ben = 0; ben< 4; i++) { for (j = 0; j < i + 1; j++) { array[i][j] = k++; System.out.print(array[i][j] + " "); } System.out.println(); } } }

3.4. Çok boyutlu bir diziyi başlatmak için blok

Örnek 7. İki boyutlu bir diziyi başlatma

Çok boyutlu diziler için, tüm öğelerin değerleri önceden biliniyorsa, bir başlatma bloğu da kullanabilirsiniz. Her bir satır, küme parantezleri içine alınır:

Genel sınıf TwoDarray3 (genel statik geçersiz ana (String args) (double arrayTwoD = ((0, 1, 2, 3)), (4, 5, 6, 7), (8, 9, 10, 11), (12, 13, 14, 15)); for (double arrayOneD: arrayTwoD) (for (çift element: arrayOneD) (System.out.print (element + "");) System.out.println ();)))

3.4. dizi uzunluğu

Örnek 8. Bir dizinin uzunluğunu alma

Aşağıdaki örnek, bir dizinin uzunluğunun nasıl alınacağını gösterir. Bunun için değişken kullanılır. uzunluk... Tek boyutlu bir dizide her şey açıktır - uzunluğu, öğelerinin sayısıdır. Çok boyutlu bir dizinin uzunluğu, ilk boyutundaki öğelerin sayısıdır. Örneğin, dizinin uzunluğu dizi2 2'dir. Ayrıca dizideki her satırın uzunluğunu da alabilirsiniz. Örneğin, dizi2.uzunluk- dizindeki öğelerin sayısını sıfır dizine sahip olarak döndürür.

Genel sınıf ArraySize (genel statik geçersiz ana (Dize bağımsız değişkenler) (int dizi1 = (1, 2, 3, 4); int dizi2 = ((1, 1, 1), (2, 2, 2)); System.out .println ("dizi1'in boyutu =" + dizi1.uzunluk); System.out.println ("Dizi2'nin boyutu =" + dizi2.uzunluk); System.out.println ("dizi2'nin 1 satırlık boyutu =" + dizi2 .uzunluk);))

Yürütme sonucu:

Dizi1'in boyutu = 4 Dizi2'nin boyutu = 2 Dizi2'nin 1 satırının boyutu = 3

4. Dizilerle çalışırken faydalı yöntemler

Dizilerle çalışırken yararlı olan birkaç yöntem vardır. Onları düşünün:

4.1. Yöntem Diziler.toString ()

Yöntem, öğeleri virgülle ayırarak tek boyutlu bir dizinin dize temsilini döndürür. Diziler arasında döngü yapmak yerine içinörnek 4'te yaptığımız gibi, öğeleri konsola çıkarmak için bu yöntemi kullanabilirsiniz:

Örnek 9. Yöntemin uygulanması Diziler.toString ()

java.util.Arrays'i içe aktarın; genel sınıf ArraysToStringDemo (genel statik geçersiz ana (String args) (int dizi = (1, 4, 6, 3, 8); System.out.println (Arrays.toString (dizi));))

4.2. Yöntem Arrays.deepToString ()

Yöntem, dizeleri köşeli parantezler içine alarak çok boyutlu bir dizinin dize temsilini döndürür:

Örnek 10. Yöntemin uygulanması Arrays.deepToString ()

java.util.Arrays'i içe aktarın; genel sınıf ArraysDeepToStringDemo (genel statik geçersiz ana (String args) (String dizisi = ("bir-bir", "bir-iki", "bir-üç"), ("iki-bir", "iki-iki", "iki-üç")); System.out.println (Arrays.deepToString (dizi));))

4.3. Yöntem Diziler.sort ()

Yöntem Diziler.sort () sayısal bir dizinin öğelerini artan düzende sıralar:

Örnek 11. Bir diziyi sıralama

java.util.Arrays'i içe aktarın; public class ArraysSort1 (public static void main (String args) (int dizi = yeni int (3, 1, 5, 6, 8); Arrays.sort (dizi); System.out.println (Arrays.toString (dizi)) ;))

4.4. Yöntem Arrays.binarySearch ()

Yöntem Arrays.binarySearch () diziyi belirli bir değer için arar ve eleman numarasını döndürür. Gerekli eleman bulunamazsa, geri döner. - (konum + 1), nerede konum- OLABİLECEK öğenin konumu. Dizi sıralanmalıdır, aksi takdirde yöntem çağrısının sonucu tanımsız olacaktır:

Örnek 12. Bir dizi elemanı bulma

java.util.Arrays'i içe aktarın; genel sınıf BinarySearch1 (genel statik geçersiz ana (Dize argümanları) (int dizi1 = (10, 20, 30, 40); int konum1 = Arrays.binarySearch (dizi1, 20); int konum2 = Arrays.binarySearch (dizi1, 25); System.out.println (poz1); System.out.println (poz2);))

Yürütme sonucu:

4.5. Yöntem Sistem.dizikopyası ()

Yöntem Sistem.dizikopyası () bir dizinin bir kısmını başka bir diziye kopyalamanıza izin verir.

Örnek 13. Bir diziyi kopyalama

Bir diziden 2,3,4 öğelerini kopyalayan bir örnek düşünün diziKaynak bir diziye diziHedef:

Java.util.Arrays'i içe aktarın; public class ArrayCopy1 (public static void main (String args) (int arraySource = (1, 2, 3, 4, 5, 6); int arrayDestination = (0, 0, 0, 0, 0, 0, 0, 0) ; System.out.println ("arraySource:" + Arrays.toString (arraySource)); System.out.println ("arrayDestination:" + Arrays.toString (arrayDestination)); System.arraycopy (arraySource, 1, arrayDestination, 2 , 3); System.out.println ("arrayDestination, arrayCopy'den sonra:" + Arrays.toString (arrayDestination));))

Yürütme sonucu:

ArraySource: arrayDestination: arrayCopy'den sonra arrayDestination:

Örnek 14. Bir diziyi kendisinden kendisine kopyalamak

Örtüşen alanlarla aynı diziye kopyalanabilir:

Java.util.Arrays'i içe aktarın; public class ArrayCopy2 (public static void main (String args) (int dizi = (1, 2, 3, 4, 5, 6, 7, 8); System.out.println (Arrays.toString (dizi)); System. arraycopy (dizi, 1, dizi, 3, 3); System.out.println (Arrays.toString (dizi));))

Yürütme sonucu:

diziler(diziler) aynı türden sıralı eleman kümeleridir. Bir dizinin öğeleri, diğer dizilere yapılan başvurular da dahil olmak üzere, basit ve başvuru türlerinin nesneleri olabilir. Dizilerin kendileri nesnelerdir ve

Object sınıfını devralır. Duyuru

int ia = yeni int;

Başlangıçta int türündeki üç Öğe kümesine işaret eden ia adlı bir dizi tanımlar.

Dizinin boyutu, dizi bildiriminde belirtilmemiştir. Bir dizideki eleman sayısı, yeni operatör kullanılarak oluşturulduğunda belirtilir. Dizinin uzunluğu, oluşturma sırasında sabitlenir ve daha sonra değiştirilemez. Yine de, değişken dizi tipi (bizim örneğimizde - ia) herhangi bir zamanda farklı bir boyuta sahip yeni bir dizi atanabilir.

Dizi elemanlarına, indeks numaralarının değerleri ile erişilir.

Dizinin ilk elemanının indeksi sıfır (0) ve sonuncusu uzunluk - 1'dir. Dizi elemanına, dizi adı ve köşeli parantez [ve] içine alınmış indeks değeri belirtilerek erişilir. önceki örnekte, ia dizideki ilk öğe olacak ve ia son olacak. Dizi öğesine dizin tarafından her erişildiğinde, Java çalışma zamanı sistemi dizin değerinin kabul edilebilir sınırlar içinde olup olmadığını kontrol eder ve test yanlışsa bir ArraylndexOutOfBoundsException atar. 6 İndeks ifadesi int türünde olmalıdır - maksimum dizi elemanı sayısını sınırlayan tek şey budur.

Bir dizinin uzunluğunu, dizi nesnesinin (dolaylı olarak genel ve nihai olan) uzunluk alanını kullanarak belirlemek kolaydır. Aşağıdaki, ia dizisindeki her öğenin içeriğini görüntülemek için bir Döngünün yürütüldüğü önceki örnekten değiştirilmiş bir koddur:

for (int ben = o; ben< ia.length; i++)

system.out.println (i + ":" + ia [i]);

Sıfır uzunlukta bir dizi (yani elemanı olmayan bir dizi) genellikle denir boş. Bir diziye yapılan boş bir başvuru ile boş bir dizi başvurusunun tamamen farklı şeyler olduğuna dikkat edin. Boş bir dizi, içinde hiçbir öğe olmayan gerçek bir dizidir. Boş bir dizi, bir yöntemden dönerken boş diziye uygun bir alternatif sağlar. Yöntem null döndürebiliyorsa, yöntemin çağrıldığı uygulama kodu, kalan işlemlere devam etmeden önce döndürülen değeri null ile karşılaştırmalıdır. Yöntem bir dizi döndürürse (muhtemelen boş), ek kontrollere gerek yoktur - elbette, dizinin uzunluğuyla ilgili olanlar dışında ve her durumda yapılmalıdır.

Köşeli parantezlerin türünün adından sonra değil, dizi tanımlayıcısından sonra belirtildiği başka bir dizi bildirimi biçimine izin verilir:

int ia = yeni int;

Bununla birlikte, daha eski sözdizimi, tür bildirimi daha kompakt olduğu için tercih edilir olarak kabul edilir.

Dizi bildirimlerindeki değiştiriciler

Bildirimlerde belirli dizileri kullanma kuralları değiştiriciler yaygındır ve yalnızca dizinin alanlara mı yoksa Yerel değişkenlere mi ait olduğuna bağlıdır. Hatırlanması gereken önemli bir şey var - değiştiriciler diziye olduğu gibi uygulanır, ancak bireysel öğelerine uygulanmaz. Dizi bildiriminde son bayrak belirtilirse, bu yalnızca diziye yapılan başvurunun oluşturulduktan sonra değiştirilemeyeceği, ancak hiçbir şekilde tek tek dizi öğelerinin içeriğinin değiştirilmesi olasılığını engellemediği anlamına gelir. Dil, dizi öğeleri için herhangi bir değiştiricinin (örneğin, final veya yolatile) belirtilmesine izin vermez.

Çok boyutlu diziler

Java, beyan etme yeteneğini destekler çok boyutlu diziler(çok boyutlu diziler) (yani öğeleri başka diziler olan diziler), İki boyutlu bir matris bildirme ve öğelerinin içeriğini ekranda görüntüleme kodu şöyle görünebilir:

şamandıra matı = yeni şamandıra;

setupMatrix (mat);

for (int y = o; y< mat.length; у++) {

for (int x = o; x< mat[y].length; х++)

system.out.print (mat [y] [x] + "");

system.out.println();

Bir dizi oluştururken, en azından ilk, "en soldaki" boyutu belirtilmelidir. Diğer boyutların belirtilmesine izin verilmez - bu durumda daha sonra belirlenmeleri gerekecektir. Yeni operatörde tüm boyutları aynı anda belirtmek, ek yeni operatörler kullanma gereğini ortadan kaldırarak bir dizi oluşturmanın en kısa yoludur. Bir dizi matı bildirmek ve oluşturmak için yukarıdaki ifade, aşağıdaki kod parçasına eşdeğerdir:

şamandıra matı = yeni şamandıra;

for (int y = o; y< mat.length; у++)

mat [y] = yeni kayan nokta;

Bu bildirim biçimi, belirli veri dizilerini depolamak için gerekli olan farklı boyutlarda dizilerin dizilerini oluşturmak için aynı boyutlara sahip diziler (örneğin 4 x 4) elde etmenin yanı sıra izin verme avantajına sahiptir.

Dizileri Başlatma

Bir dizi oluşturulduğunda, dizinin türüne bağlı olarak her öğeye varsayılan bir değer atanır: sayısal türler için sıfır (0), char için '\ u0000 ′ _, boolean için false ve başvuru türleri için null. Referans türünde bir dizi bildirerek, aslında bir dizi n tanımlıyoruz. değişken bu türden. Aşağıdaki kod parçasını göz önünde bulundurun:

Attr attrs = yeni Attr;

for (int ben = o; ben< attrs.length; i++)

attrs [i] = yeni Attr (adlar [i], değerler [i]);

Yeni operatörü içeren ilk ifade yürütüldükten sonra, attrs değişkeni, null olarak başlatılan 12 değişkenlik bir diziye bir başvuru alır.Bu tür Attr nesneleri yalnızca döngü sırasında oluşturulur.

Bir dizi, öğelerinin orijinal Değerlerini listeleyen küme parantezleri içindeki bir yapı aracılığıyla (bildirimiyle aynı anda) başlatılabilir:

Dize tehlikeleri = ("Aslanlar", "Kaplanlar", "Ayılar");

Aşağıdaki kod parçası aynı sonucu verecektir:

String tehlikeleri = new String; tehlikeler = "Aslanlar";

tehlikeler = "Kaplanlar";

tehlikeler = "Ayılar";

Kıvrımlı parantez içindeki başlatıcıların bir listesini sağlayan ilk biçim, new operatörünün açık bir şekilde kullanılmasını gerektirmez - çalışma zamanı sistemi tarafından dolaylı olarak çağrılır. Bu durumda dizinin uzunluğu, Başlatıcı değerlerinin sayısı ile belirlenir. Yeni operatörün açıkça belirtilmesine de izin verilir, ancak boyut yine de ihmal edilmelidir, çünkü daha önce olduğu gibi çalışma zamanı sistemi tarafından belirlenir:

String tehlikeleri = new String ("Aslanlar", "Kaplanlar", "Ayılar");

Bir diziyi bildirmenin ve başlatmanın bu biçimi, örneğin bir yöntem çağrısı ifadesinde, kodun herhangi bir yerinde kullanılabilir:

printStringsCnew String ("bir", "iki", "üç"));

Bu şekilde oluşturulan isimsiz bir diziye denir. anonim(anonim).

Dizi dizileri, iç içe geçmiş orijinal değerler dizileriyle başlatılabilir. Aşağıda, sözde dizinin ilk birkaç satırını içeren bir dizi bildirme örneği verilmiştir. Pascal üçgeni, burada her satır kendi değer dizisiyle tanımlanır.

int pascalsÜçgen = (

{ 1, 4, 6, 4, 1 },

Çok boyutlu dizi indeksleri dıştan içe doğru sıralanır. Örneğin, pascalsTriangle);

// Bir dizinin oluşturulmasını gösteren bir örnek
// tamsayılar, bazı değerleri bir diziye koyar,
// ve her değeri yazdırır.

sınıf GFG
{
{
int dizi;

// 5 tam sayı için bellek ayırma.
dizi = yeni int;


dizi = 10;


dizi = 20;

// yakın zamanda ...
dizi = 30;
dizi = 40;
dizi = 50;

// belirtilen dizinin elemanlarına erişim
for (int ben = 0; ben< arr.length; i++)
System.out.println ("İndeksteki öğe" + i +
":" + dizi [i]);
}
}
Sonuç olarak şunları elde ederiz:

Dizin 0: 10 Dizin 1: 20 Dizin 2: 30 Dizin 3: 40 Dizin 4'teki öğe: 50

Nesne dizileri

Veri öğeleriyle aynı şekilde aşağıdaki gibi bir nesne dizisi oluşturulur:

Öğrenci arr = yeni Öğrenci;

StudentArray, yedi Student nesnesinin adreslerinin saklanabileceği, her öğrenci sınıfından yedi bellek öğesi içerir. Öğrenci nesneleri, öğrenci sınıfının yapıcısı kullanılarak oluşturulmalı ve bunların referansları, dizi öğelerine aşağıdaki gibi atanmalıdır:

Öğrenci arr = yeni Öğrenci;

// Bir dizi oluşturmayı gösteren Java programı
// nesneler

sınıf Öğrenci
{
public int roll_no;
genel Dize adı;
Öğrenci (int roll_no, Dize adı)
{
this.roll_no = roll_no;
this.name = isim;
}
}

// Dizinin öğeleri, Student sınıfının nesneleridir.
genel sınıf GFG
{
public static void main (String argümanlar)
{
// bir tamsayı dizisi bildirir.
Öğrenci arr;

// Student türündeki 5 nesne için bellek ayırma.
arr = yeni Öğrenci;

// dizinin ilk elemanlarını başlat
arr = yeni Öğrenci (1, "aman");

// dizinin ikinci elemanlarını başlat
arr = yeni Öğrenci (2, "vaibhav");

// yakın zamanda ...
arr = yeni Öğrenci (3, "shikar");
dizi = yeni Öğrenci (4, "dharmesh");
arr = yeni Öğrenci (5, "mohit");

// belirtilen dizinin elemanlarına erişim
for (int ben = 0; ben< arr.length; i++)
System.out.println ("Öğe" + i + ":" +
dizi [i] .roll_no + "" + dizi [i] .name);
}
}

Şunları elde ederiz:

0: 1 aman Öğe 1: 2 vaibhav Öğe 2: 3 shikar Öğe 3: 4 dharmesh Öğe 4: 5 mohit

Dizinin dışındaki bir öğeye erişmeye çalışırsak ne olur?
Derleyici, diziye geçersiz bir dizinde erişildiğini belirten bir ArrayIndexOutOfBoundsException oluşturur. Dizin, dizinin boyutuna eşit veya ondan büyük veya ona eşittir.

Çok boyutlu

Çok boyutlu diziler, her bir elemanı başka bir diziye referans içeren dizi dizileridir. Her boyut için bir dizi köşeli parantez () eklenerek oluşturulur. Bir örnek düşünelim:

Int intArray = yeni int; // bir 2B dizi veya matris int intArray = yeni int; // bir 3B dizi

Çok Boyutlu Sınıf
{
public static void main (String argümanlar)
{
// 2B diziyi bildirme ve başlatma
int dizi = ((2,7,9), (3,6,1), (7,4,2));

// 2B diziyi yazdırma
for (int ben = 0; ben< 3 ; i++)
{
for (int j = 0; j< 3 ; j++)
System.out.print (dizi [i] [j] + "");

System.out.println();
}
}
}

Çıktı: 2 7 9 3 6 1 7 4 2


Dizileri Bir Yönteme Geçirmek

Değişkenler gibi dizileri de yöntemlere geçirebiliriz.

// Dizinin metot sınıfına geçirilmesini gösteren Java programı Test (// Sürücü metodu public static void main (String args) (int arr = (3, 1, 2, 5, 4); // diziyi metoda geçirme m1 toplamı (dizi);) public static void toplamı (int dizi) (// dizi değerlerinin toplamını alma int toplam = 0; for (int i = 0; i)< arr.length; i++) sum+=arr[i]; System.out.println("sum of array values: " + sum); } }

Çıktıda şunları elde ederiz:

dizi değerlerinin toplamı: 15

Metotlardan Dizileri Döndürmek

Her zamanki gibi, yöntem bir dizi de döndürebilir. Örneğin, aşağıdaki program m1 yönteminden bir dizi döndürür.

// Göstermek için Java programı // yöntem sınıfından dizinin dönüşünü Test (// Sürücü yöntemi public static void main (String args) (int arr = m1 (); for (int i = 0; i)< arr.length; i++) System.out.print(arr[i]+" "); } public static int m1() { // returning array return new int{1,2,3}; } }

Sınıf nesneleri

Her dizinin, aynı bileşen türüne sahip diğer tüm dizilerle paylaşılan ilişkili bir sınıf nesnesi vardır.

// Gösterilecek Java programı // Diziler için Sınıf Nesneleri sınıf Testi (genel static void main (String args) (int intArray = yeni int; byte byteArray = yeni bayt; kısa şortArray = yeni kısa; // Strings dizisi String strArray = yeni Dize; System.out.println (intArray.getClass()); System.out.println (intArray.getClass (). getSuperclass()); System.out.println (byteArray.getClass()); System.out. println (shortsArray.getClass ()); System.out.println (strArray.getClass ());))

sınıf + ""); )))

Çok boyutlu bir dizinin klonu (Object gibi) bir kopyadır; bu, her öğeyle yalnızca bir yeni dizi ve orijinal öğe dizisine bir başvuru oluşturduğu anlamına gelir, ancak iç içe diziler yaygındır.

// Çok boyutlu dizilerin klonlanmasını gösteren Java programı class Test (public static void main (String args) (int intArray = ((1,2,3), (4,5)); int cloneArray = intArray. klon (); // false yazdıracak System.out.println (intArray == cloneArray); // sığ kopya oluşturulduğunda doğru yazdıracak // yani alt diziler paylaşılıyor System.out.println (intArray == cloneArray) ; System.out.println (intArray == klonArray);))

YANLIŞ
NS
NS