"Enter"a basıp içeriğe geçin

Diziler

Diziler, belli bir tipte değerleri ardışık olarak tutmaya yararlar. Veriler birbirine yakınsa, bir veriyi alırken işlemci daha sonra işine yarayabileceğini düşünerek yakınındaki verileri de alır. Bu da performansta artış sağlar.

Diziler sayesinde yüzlerce değişkene kolayca erişebiliriz.

int i=10; dedğimizde, integer tipinde tek bir değer tutuyorduk.
int [] dizi = new int[20]; dersek int tipinde bir dizi oluşturmuş oluruz. Ve bu dizi 20 tane integer tutabilir. dizi aslında uçuca eklenmiş hafıza bloklarıdır. Dizinin bir elemanına yani hafıza bloğuna erişmek için dizi[3]; dememiz yeterlidir.

Dizi bir kere oluşturulduktan sonra boyutu değiştirilemez.

Dizi elemanları 0’dan başlar. Yani ilk eleman dizi[0] olur. Her bir elemana index denir. Bu durumda dizinin 0. indexi ilk elemandır.
dizi[3]=5; dersek, dizinin 5. elemanında tutulan integer alana 5 değerini atamış oluruz.
int değişken kullanılan her yerde dizi indexi ile erişebiliriz.

Dizilerin en önemli işlevlerinden biri, döngülerde rahatça kullanılabilmeleridir.
döngüdeki değişkenleri indexlere erişmede kullanabiliriz.

ilkendirmeyi int[] dizi= {2,3,5,7,9}; şeklinde de yapabiliriz.

Dizilerin içinde bazı özel işlevler bulunur.
Dizinin uzunluğu için dizi.lenght diyebiliriz

Fonksiyonlarda da kullanabiliriz

Bir değişken veya referans fonksiyon içinde oluşturulduysa fonksiyon bloğu bitince silinirdi.
Dizi referansını return ile döndürerek dizilerin kaybolmamasını sağlayabiliriz.


dizi1 fonksiyon içinde oluşturuldu. Normalde fonksiyon bloğu bittiği için silinmesi lazımdı. Ama return ile dizi2 referansına atadık. Artık dizi1 içeriğine dizi2 referansı ile ulaşabiliriz.
Dizi silinmeden önce referansı başka bir referansa atadığımız için kaybolmadı.

dizi1==dizi2 dediğimizde elemanlar aynı olsa bile bunlar eşit sayılmaz. Eşit olmaları için hafızada aynı yeri göstermeleri gerekir.

Java içinde array sınıfı vardır. Bu sınıfın içinde işimizez yarayabilecek çeşitli fonksiyonlar bulunur.
import java.util.Arrays; satırını kodumuza ekleyerek fonksiyonları kullanabiliriz.

Mesela diziyi sıralamak için Arrays.sort(dizi); diyebiliriz.

İçeriklerin eşitliğine bakmak için Arrays.equals(dizi1,dizi2) kullanırız.

Çok Boyutlu Diziler

Şimdiye kadar öğrendiklerimiz, bir şerit gibi dizilen tek boyutlu dizilerdi. Koordinat sistemi gibi düşünürsek, sadece x değeri vardır. x 0 ise 0. indexteki değeri gösterir.

Ancak çok boyutlu diziler olabilir. Mesela 2 boyutlu bir dizi düşünelim. dizi[3][4] dediğimizde 3 satır 4 sütunu olan bir dizi oluştururuz.

[1][2] dediğimizde 1. satırın 2. sütunundaki hafıza bloğunu gösteririz. Bu sefer x ye y eksenleri ile ifade edebiliriz. x=2, y=1 noktasındaki hafıza bloğu bizim elemanımızdır.
Bu yapı aslında matrix yapısıdır.

10

mantıksal olarak böyle gösterirse de aslında hafızada yine yan yana tutulurlar. ilk satırın son elemanının yanında 2. satırın ilk elemanı bulunur.

İlkendirme yaparken iç içe parantezler kullanılır. İçteki her bir parantez bir satırı ifade eder.
2 boyutlu bir diziyi yazdırmak için içiçe for kullanılır. Dıştaki for satırı, içteki for sütunu tutar.

matrix gösterimi için for döngüsünü şöyle de ayarlayabiliriz.

Bu for döngülerinin dezavantajı, satrı ve sütun sayısını kendimiz girmemizdi. Bunu pratik hale getirmek için foreach döngüsü üretilmiştir. Bu döngü sayesinde satır ve sayısını bilmeden dizinin tüm elemanlarını dolaşabiliriz.

int eleman diyerek sıradaki elemanı tutacak geçici bir değişken oluşturduk. dizi’nin ilk değişkeni eleman değişkenine atanır. bloğun içinde işlemler yapılır ve döngü başa döner. Sonra 2. değişken eleman değişkenine atanır. Onun için de işlemler yapılır.
Bu şekilde döngüdeki tüm elemanlar eleman değişkenine atanır ve gerekli işlemler yapılır. Bu sayede işimizi çok daha kolay halledebiliriz.

dizinin bir int veya string olmasına gerek yoktur. Kendi oluşturduğumuz sınıfların da dizisini oluşturup tüm elemanları yazdırabiliriz. Ama sout fonksiyonu bizim oluşturduğumuz sınıf nesnelerinde çalışmaz. Bu yüzden sınıfın içinde bir print fonksiyonu oluşturmamız gerekir.

Arraylist’ler

Akıllı dizilerdir. Normal dizilerin aksine boyutları sonradan değiştirilebilir. Ayrıca birçok ek özellik mevcuttur. Ancak Standart dizilere göre biraz daha yavaş çalışabilirler.

Tanımlanlamarı dizilerden biraz farklıdır. Arraylist oluştururken referans göndermemiz gerekir. String veya başka bir sınıfı direk oluşturabiliriz çünkü String string dediğimizde bu aslında bir referanstır . Ancak int, double vb. temel tiplerinde int a dediğimizde a bir referans değildir.
Temel tiplerin referanslarını oluşturmak için bir üst sınıf (wrapper class) tanımlanmıştır. Bu sayede temel tipler için referans oluşturabiliriz.

Arraylist<Integer> array =new Arraylist<Integer>(); diyerek integer bir Arraylist oluşturabiliriz. Görüldüğü gibi herhangi bir boyut bilgisi vermedik.

Arraylist sınıfının birçok fonksiyonu mevcuttur. Bunlardan ilki add fonksiyonudur. Bu fonksiyon listenin sonuna bir değer ekler.

array.add(10) dersek listenin sonuna 10 integer’ını ekler. Listemiz önceden boş olduğu için şuan sadece 10 sayısı var.

array.get(0) diyerek 0. index’e erişebiliriz. //dizi[0] işe yaramaz.
array.size() ile listenin boyutunu öğreniriz.
array.remove(3) diyerek 3. indexi silmiş oluruz. Bu silme işlemi aradan siler. Yani 4. indexteki eleman 3’e, 4teki 5’e kayar.
array.indexOf(10); diyerek 10 sayısının kaçıncı indexte olduğunu görebiliriz. Eğer birden fazla 10 varsa sadece ilkinin indexini yazar. Listemizde 10 yoksa -1 döndürür.
array.set(3,15) dersek 3. indexteki elemanı 15 yapar.

araya eleman eklenebilir.
array.add(5,22); 5. indexe 22 ekledi, sonrakiler kaydı.

Diziler gibi Arraylistler de referans ile fonksiyonlara gönderilebilir.

 

Stringler

Stringler aslında char’lardan oluşan dizilerdir. String sınıfı da bu diziyi kontrol etmemizi sağlar.

String kelime=new String(“ilhan”); Diyerek bir string oluşturdum ve ilhan kelimesini ekledim. Bu string aslında 6 tane char’dan oluşan bir char dizisi. Dizinin ilk 5 indexi sırasıyla i l h a n harfleridir. Her stringin sonunda stringin bittiğini gösteren bir nulll karakter bulunur be \0 ile gösteririr:
Bu durumda dizinin içeriği       i l h a n \0     şeklindedir.

Dizinin tek bir indexine erişmek için kelime.charAt(i) fonksiyonunu kullanırız.
kelime.lenght fonksiyonu ile kaç harfli olduğunu bulabiliriz.
kelime.indexOf(‘h’); ile h harfinin indexini buluruz.
kelime.indexOf(“han”); //han kalıbının olduğu yeri gösterir
kelime.toLowerCase(); tüm harfleri küçük harf yapar.
kelime.toUpperCase(); hepsini büyük harf yapar.

Stringi integera çevirmek için Integer.parseInt(harf) deriz.
valueOf ile int’i stringe çevirmiş oluruz.

Bu şekilde oluşturulan iki string içeriği aynı olsa da eşit çıkmaz. Çünkü if(s1==s2 dersek, adreslerinin aynı olup olmadığına bakar.)
Kıyaslama için k1.equals(k2); kullanılır.//küçük-büyük harf duyarlılığı yoktur

Stringin bir bölümünü alma
System.out.println(kelime.substring(3, 7)); //Stringin 3 ile 7. indexleri arasını yazdırır(7 dahil değil).
String[] kelimeler = metin.split(” “); boşluklara göre ayırır.

k1.compareTo(k2) metodu iki stringin alfabedeki yerlerini kıyaslamada kullanılır.
Sonuç 0 ise kelimeler aynıdır.
negatif ise k1 k2’den sonradır.
pozitif ise k1 k2’den öncedir.

k1.startsWith(“il”); k1 stringi il ile başlıyorsa true döner.
k1.endsWith(“lu”); k1 stringi lu ile bitiyorsa true döner.

 

Fonksiyonların tamamı için https://beginnersbook.com/2013/12/java-strings/

    Bir cevap yazın

    E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir