Programlamaya yeni başlayanlar için hazırladığım Java Dersleri serimde bu yazıda sizlere Java’da Array kullanımını anlatacağım . Array yada dizi diye geçen veri yapısı aynı veri tipinde verileri saklamak için kullandığımız bir listedir. Örneğin bir sınıfın sınav notlarının ortalamasını bulmak için tüm notları bir array içinde saklayabilirsiniz.
Java’da Array Tanımlama :
int[] sayilar = new int [6] ;
Burada “Veri tipi [ ] değişken adı = new veri tipi[toplam eleman sayısı];” şeklinde tanımlıyoruz.
Buna alternatif olarak şu şekilde de tanımlayabilirsiniz:
int sayilar[] = new int [6] ;
Arrayleri elemanları ile şu şekilde tanımlarız:
String[] gunler = {"pazartesi","salı","çarşamba","perşembe","cuma","cumartesi","pazar"};
Array içindeki bir elemana erimek istediğimiz zaman arrayin-değişkeni[elemanın index değeri ] şeklinde çağırıyoruz.
String[] gunler = {"pazartesi","salı","çarşamba","perşembe","cuma","cumartesi","pazar"}; System.out.println(gunler[0]); // Çıktı :pazartesi
Java’da Array Elemanları Üzerinde Gezinmek :
Arrayin ismi [ ] içinde index değeri ile çağırabiliyoruz . Array indexleri sıfırdan başlıyor , 10 elemanlı bir dizinin son elemanın index değeri 9 ile bitiyor. Tüm elemanlar üzerinde gezinmek için bir döngü içinde tek tek tüm elemanların üzerinde geziniyoruz. Burada “length” methodunu arraydeki toplam eleman sayısını öğrenmek için kullanıyoruz.
int[] numbers = {12,3,4,5,6}; for(int i =0; i<numbers.length; i++){ System.out.println(numbers[i]); }
Arrayi Method İle Return Etme :
Java’da bir methodun array return etmesi için veritipi tanımlanan kısmın sonuna [ ] köşeli parantez koymak yeterlidir .
public static int[] array2x (int[] liste) { for(int i=0; i<liste.length;i++){ liste[i] *=2; } return liste; }
Örneğin yukarıdaki method gönderilen array içindeki sayıları iki katı ile çarparak arrayi geri döndürüyor .
Array Methodlarını Kullanma :
java.util.Arrays classı içerisinde Arrayler üzerinde kullanabileceğimiz methodlar vardır.
1- public static void sort(Object[] a)
Sort methodu array içindeki elemanları sıralar . Fakat methodun veri tipinin void olduğundan göreceğiniz gibi arrayi geri return etmez.
Java’da Array Sıralama :
import java.util.Arrays; public class test { public static void main(String[] args){ int[] numbers = {7,3,4,5,2,6,8,0,9,1}; Arrays.sort(numbers); for(int i =0; i<numbers.length; i++){ System.out.print(numbers[i]+" "); } } }
Bu kod numbers arrayimiz içindeki sayıları sıralayacak ve çıktısı şu şekilde :
0 1 2 3 4 5 6 7 8 9
2- public static boolean equals(long[] a, long[] a2)
equals methodu iki arrayin birbirine eşit olup olmadığını kontrol eder . Peki javada == operatörü ile zaten verileri kontrol edebilirken neden böyle bir methoda ihtiyaç var ?
Bu sorunun cevabını kod üzerinde deneyerek göstermek istiyorum .
import java.util.Arrays; public class test { public static void main(String[] args){ int[] liste1 = {1,23, 4,5}; int[] liste2 = {1,23 ,4,5}; System.out.println(liste1==liste2); System.out.println(Arrays.equals(liste1,liste2)); } }
Kodun Çıktısı :
false true
Bu kod ile içerik olarak aynı olan iki arrayin önce == operatörü ile boolean veri tipinde sonucunu daha sonrada Arrays.equals methodu ile boolean veri tipinde olan sonucunu ekrana bastırdır.
İkisinin farklı olmasının sebebi == operatörünün bellekte ikisinin aynı yerde tutulup tutulmadığını kontrol etmesi bu durumda ikiside farklı yerlerde tutulduğu için false değerini dönüyor.
3 .clone()
.clone Array classı ile değil direk tanımladığınız array üzerinde çağırabileceğiniz bir method.
Tanımladığınız arrayi klonlamanıza yarıyor . Peki = ile iki değişkeni birbirine eşitlemek varken neden böyle bir methoda ihtiyaç duyulmuş?
equals methodunda olduğu gibi Java’da arrayler üzerinde işler bellek üzerindeki işlemleri nedeniyle diğer int ,String gibi veri tiplerinden değişik işliyor.
int[] liste1 = {1,23, 4,5}; System.out.println(liste1[0]); int[] liste2 = liste1; System.out.println(liste2[0]); liste2[0]=12; System.out.println(liste1[0]);
Bu kodun çıktısı :
1 1 12
Burada liste1 adında bir array tanımlıyorum daha sonra bunu liste 2 adında yeni bir arraye eşitliyorum . Daha sonra liste2 üzerinde değişiklik yapıyorum ve bu değişikliğin liste1de de olduğunu görüyorum .Eğer arraylerin bu değişiklikten etkilmemesini istiyorsanız .clone() methodunu kullanmalısınız.
int[] liste1 = {1,23, 4,5}; int[] liste3 = liste1.clone(); System.out.println(liste1[0]); liste3[0]= 12; System.out.println(liste1[0]); System.out.println(liste3[0]);
Bu kodun çıktısı :
1 1 12
Gördüğünüz gibi .clone methodu ile arrayleri kopyladığımızda değişiklikler birbirini etkilemiyor.
Çok Boyutlu Arrayler :
Java’da birden fazla boyutta N tane array tanımlayabiliriz. Örneğin bir sınıftaki öğrencilerin isimlerini, cinsiyetlerini , okul numaralarını tanımlamak için bir array tanımlayabiliriz.
Çok boyutlu dizileri şu şekilde tanımlıyoruz.
//İki boyutlu array tanımlama int[][] ikiBoyut = new int[10][20]; // Üç boyutlu array tanımlama int[][][] ucBoyut = new int[10][20][30];
Çok boyutlu arraylerin elemanlarını bu şekilde çağırıyor ve üzerinlerinde gezineceğimiz döngü yapımızda bu şekilde .
int[][] array = {{10,20},{31,12}}; System.out.println(array[0][0]); //Çıktı 10 System.out.println(array[1][1]);// Çıktı 12 for(int i =0; i <2; i++){ for(int j =0; j<2; j++){ System.out.print(array[i][j]+" "); } System.out.println(); }
Bu kodun çıktısı şu şekilde :
10 12 10 20 31 12
Java dersleri serisinin bu yazısında sizlerle Java’da array kullanımından bahsettim . İyi çalışamalar dilerim.