SlideShare a Scribd company logo
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Java Programlama Dili
Bileşke Türler
Tevfik AKTUĞLU
ta-java.blogspot.com
Mart 2016
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Nesnenin Yaşam Döngüsü
Bazı Önemli İletiler
İçerik
1 Sınıflar ve Nesneler
2 Karakter Katarları
3 Diziler
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Nesnenin Yaşam Döngüsü
Bazı Önemli İletiler
Nesne Yaratma Blog makalesi
İlişkin sınıfa dair sınıf dosyasının sınıf yolu (CLASSPATH)
üzerinde olması gerekir.
Java standardındaki türler otomatik olarak sınıf yolu üzerinde
gözükür.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Nesnenin Yaşam Döngüsü
Bazı Önemli İletiler
Nesne Yaratma Blog makalesi
İlişkin sınıfa dair sınıf dosyasının sınıf yolu (CLASSPATH)
üzerinde olması gerekir.
Java standardındaki türler otomatik olarak sınıf yolu üzerinde
gözükür.
Sınıf dosyası görünür hale getirilmelidir
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Nesnenin Yaşam Döngüsü
Bazı Önemli İletiler
Nesne Yaratma Blog makalesi
İlişkin sınıfa dair sınıf dosyasının sınıf yolu (CLASSPATH)
üzerinde olması gerekir.
Java standardındaki türler otomatik olarak sınıf yolu üzerinde
gözükür.
Sınıf dosyası görünür hale getirilmelidir
Sınıfın uzun adı kullanılabilir.
java.util.Date şuAn = new java.util.Date();
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Nesnenin Yaşam Döngüsü
Bazı Önemli İletiler
Nesne Yaratma Blog makalesi
İlişkin sınıfa dair sınıf dosyasının sınıf yolu (CLASSPATH)
üzerinde olması gerekir.
Java standardındaki türler otomatik olarak sınıf yolu üzerinde
gözükür.
Sınıf dosyası görünür hale getirilmelidir
Sınıfın uzun adı kullanılabilir.
import yönergesi sayesinde sınıfın kısa adı kullanılabilir.
import java.util.Date;
...
Date şuAn = new Date();
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Nesnenin Yaşam Döngüsü
Bazı Önemli İletiler
Nesne Yaratma Blog makalesi
İlişkin sınıfa dair sınıf dosyasının sınıf yolu (CLASSPATH)
üzerinde olması gerekir.
Java standardındaki türler otomatik olarak sınıf yolu üzerinde
gözükür.
Sınıf dosyası görünür hale getirilmelidir
Sınıfın uzun adı kullanılabilir.
import yönergesi sayesinde sınıfın kısa adı kullanılabilir.
java.lang paketindeki tüm türler görünürdür.
String ad = "Tevfik";
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Nesnenin Yaşam Döngüsü
Bazı Önemli İletiler
Nesne Yaratma Blog makalesi
İlişkin sınıfa dair sınıf dosyasının sınıf yolu (CLASSPATH)
üzerinde olması gerekir.
Java standardındaki türler otomatik olarak sınıf yolu üzerinde
gözükür.
Sınıf dosyası görünür hale getirilmelidir
Sınıfın uzun adı kullanılabilir.
import yönergesi sayesinde sınıfın kısa adı kullanılabilir.
java.lang paketindeki tüm türler görünürdür.
Nesne yaratma iki aşamada gerçekleşir.
Yığın bellekten yer ayırma
İlkleme Blog makalesi
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Nesnenin Yaşam Döngüsü
Bazı Önemli İletiler
Nesne Yaratma Blog makalesi
İlişkin sınıfa dair sınıf dosyasının sınıf yolu (CLASSPATH)
üzerinde olması gerekir.
Java standardındaki türler otomatik olarak sınıf yolu üzerinde
gözükür.
Sınıf dosyası görünür hale getirilmelidir
Sınıfın uzun adı kullanılabilir.
import yönergesi sayesinde sınıfın kısa adı kullanılabilir.
java.lang paketindeki tüm türler görünürdür.
Nesne yaratma iki aşamada gerçekleşir.
Yığın bellekten yer ayırma
İlkleme Blog makalesi
new işlecinin her kullanımı yeni bir nesne yaratır.
Nesneleri yeniden kullanmak için new işleci yerine fabrika
metotlarından yararlanılabilir.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Nesnenin Yaşam Döngüsü
Bazı Önemli İletiler
Nesne ve Tutacağı
Integer intSayı = new Integer(3);
Integer intSayı2 = intSayı;
Integer intSayı3 = new Integer(3);
3
3
intSayı intSayı2
intSayı3
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Nesnenin Yaşam Döngüsü
Bazı Önemli İletiler
İleti Gönderme ve Metot Çağırma
Tanım
İleti: Türün çevreyle etkileşim amacıyla ilan ettiği soyut işlem
Metot: Bir işlemin gerçekleştirimi
Çokbiçimlilik: Bir iletinin birden çok metoda bağlanabilmesi
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Nesnenin Yaşam Döngüsü
Bazı Önemli İletiler
İleti Gönderme ve Metot Çağırma
Tanım
İleti: Türün çevreyle etkileşim amacıyla ilan ettiği soyut işlem
Metot: Bir işlemin gerçekleştirimi
Çokbiçimlilik: Bir iletinin birden çok metoda bağlanabilmesi
İleti tutacak yoluyla gönderildiği nesnenin türüne uygun seçilen
aynı imzalı metodun çalışması ile işini görür.
Number sayı = new java.math.BigInteger("123");
System.out.println("Değer: " + sayı.intValue());
sayı = new Integer(11);
System.out.println("Değer: " + sayı.intValue());
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Nesnenin Yaşam Döngüsü
Bazı Önemli İletiler
İleti Gönderme ve Metot Çağırma
Tanım
İleti: Türün çevreyle etkileşim amacıyla ilan ettiği soyut işlem
Metot: Bir işlemin gerçekleştirimi
Çokbiçimlilik: Bir iletinin birden çok metoda bağlanabilmesi
İleti tutacak yoluyla gönderildiği nesnenin türüne uygun seçilen
aynı imzalı metodun çalışması ile işini görür.
Nesne ile ilişkilendirilmeyen tutacaklara ileti gönderilemez. Bu
durumda, yapılabilecek tek şey tutacağın null denetimidir.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Nesnenin Yaşam Döngüsü
Bazı Önemli İletiler
İleti Gönderme ve Metot Çağırma
Tanım
İleti: Türün çevreyle etkileşim amacıyla ilan ettiği soyut işlem
Metot: Bir işlemin gerçekleştirimi
Çokbiçimlilik: Bir iletinin birden çok metoda bağlanabilmesi
İleti tutacak yoluyla gönderildiği nesnenin türüne uygun seçilen
aynı imzalı metodun çalışması ile işini görür.
Nesne ile ilişkilendirilmeyen tutacaklara ileti gönderilemez. Bu
durumda, yapılabilecek tek şey tutacağın null denetimidir.
static metotlar.
Aynı sınıfa ait nesnelerin paylaşılan ortak özellikleri.
Nesne yaratılmadan kullanılabilecek özellikler.
İşleç olarak tanımlanmamış ilkel türlere dair işlemler.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Nesnenin Yaşam Döngüsü
Bazı Önemli İletiler
Nesne Geri Döndürme
Kullanılmaz hale gelen nesnelerin belleği otomatik çöp
toplayıcı tarafından geri döndürülür.
İlişkili tutacağın olmaması durumunda nesne kullanılmaz hale
gelmiş demektir.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Nesnenin Yaşam Döngüsü
Bazı Önemli İletiler
Nesne Geri Döndürme
Kullanılmaz hale gelen nesnelerin belleği otomatik çöp
toplayıcı tarafından geri döndürülür.
İlişkili tutacağın olmaması durumunda nesne kullanılmaz hale
gelmiş demektir.
Geri döndürme nesnenin kullanılmaz hale geldiği noktayla
program sonu arasında herhangi bir an gerçekleşebilir ve ilk
giren ilk çıkar mantığı ile yapılmaz.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Nesnenin Yaşam Döngüsü
Bazı Önemli İletiler
Nesne Geri Döndürme
Kullanılmaz hale gelen nesnelerin belleği otomatik çöp
toplayıcı tarafından geri döndürülür.
İlişkili tutacağın olmaması durumunda nesne kullanılmaz hale
gelmiş demektir.
Geri döndürme nesnenin kullanılmaz hale geldiği noktayla
program sonu arasında herhangi bir an gerçekleşebilir ve ilk
giren ilk çıkar mantığı ile yapılmaz.
Bellek dışı kaynaklar ve JSM tarafından ayrılmayan yığın
bellek programcı tarafından döndürülmek zorundadır.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Nesnenin Yaşam Döngüsü
Bazı Önemli İletiler
İlkel Tür-Sınıf Dönüşümü
java.util.Vector<Byte> bVek = new java.util.Vector<>();
byte b1 = 125, b2;
...
bVek.add(b1);
b2 = bVek.get(0);
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Nesnenin Yaşam Döngüsü
Bazı Önemli İletiler
İlkel Tür-Sınıf Dönüşümü
java.util.Vector<Byte> bVek = new java.util.Vector<>();
byte b1 = 125, b2;
...
bVek.add(b1);
b2 = bVek.get(0);
Ön derleme
⇓
bVek.add(Byte.valueOf(b1));
b2 = bVek.get(0).byteValue();
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Nesnenin Yaşam Döngüsü
Bazı Önemli İletiler
Sarmalayıcı Sınıflar
İlkel tür Sarmalayıcı sınıf SS→İlkel tür İlkel tür→SS
boolean Boolean booleanValue
byte Byte byteValue
char Character charValue
double Double doubleValue
float Float floatValue valueOf
int Integer intValue
long Long longValue
short Short shortValue
void Void — —
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Nesnenin Yaşam Döngüsü
Bazı Önemli İletiler
Eşitlik Denetimi (equals) Blog makalesi
== ve != işini tutacağı denetleyerek yapar.
Long l1 = new Long(5), l2 = new Long(5);
System.out.println(l1 == l2); // ⇒ false
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Nesnenin Yaşam Döngüsü
Bazı Önemli İletiler
Eşitlik Denetimi (equals) Blog makalesi
== ve != işini tutacağı denetleyerek yapar.
Tutacak yerine nesne eşitliğinin denetimi istenecek olursa,
equals iletisinin kullanılması gerekir.
System.out.println(l1.equals(l2)); // ⇒ true
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Nesnenin Yaşam Döngüsü
Bazı Önemli İletiler
Eşitlik Denetimi (equals) Blog makalesi
== ve != işini tutacağı denetleyerek yapar.
Tutacak yerine nesne eşitliğinin denetimi istenecek olursa,
equals iletisinin kullanılması gerekir.
equals iletisinin varsayılan gerçekleştirimi == ile aynı şekilde
çalışır. Bunun istenmemesi durumunda, ilişkin sınıfta istenen
gerçekleştirime sahip aynı imzalı bir metot sağlanması gerekir.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Nesnenin Yaşam Döngüsü
Bazı Önemli İletiler
Eşitlik Denetimi (equals) Blog makalesi
== ve != işini tutacağı denetleyerek yapar.
Tutacak yerine nesne eşitliğinin denetimi istenecek olursa,
equals iletisinin kullanılması gerekir.
equals iletisinin varsayılan gerçekleştirimi == ile aynı şekilde
çalışır. Bunun istenmemesi durumunda, ilişkin sınıfta istenen
gerçekleştirime sahip aynı imzalı bir metot sağlanması gerekir.
Kullanılacak fabrika metotları işi değiştirebilir.
Long l1 = Long.valueOf(5), l2 = Long.valueOf(5);
System.out.println(l1 == l2); // ⇒ true
Long l3 = Long.valueOf(128), l4 = Long.valueOf(128);
System.out.println(l3 == l4); // ⇒ false
System.out.println(l3.equals(l4)); // ⇒ true
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Nesnenin Yaşam Döngüsü
Bazı Önemli İletiler
Karşılaştırma (compareTo)
Bazı nesneler karşılaştırılabilirken bazıları karşılaştırılamaz.
Integer, String, vb. 
Disk dosyaları, karmaşık sayılar, matrisler, vb. 
Dolayısıyla, , =,  ve = işleçleri bileşke türlerde
kullanılamaz.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Nesnenin Yaşam Döngüsü
Bazı Önemli İletiler
Karşılaştırma (compareTo)
Bazı nesneler karşılaştırılabilirken bazıları karşılaştırılamaz.
Integer, String, vb. 
Disk dosyaları, karmaşık sayılar, matrisler, vb. 
Dolayısıyla, , =,  ve = işleçleri bileşke türlerde
kullanılamaz.
Karşılaştırılabilir nesnelerin sınıfları Comparable arayüzünü
gerçekleştirmek zorundadır.
Comparable arayüzünün compareTo iletisi söz konusu sınıfın
nesneleri arasındaki öncelik sonralık ilişkisini tayin eder.
String ad1 = Tevfik, ad2 = Duygu;
System.out.println(ad1.compareTo(ad2)); // ⇒ 16
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Nesnenin Yaşam Döngüsü
Bazı Önemli İletiler
Karşılaştırma (compareTo)
Bazı nesneler karşılaştırılabilirken bazıları karşılaştırılamaz.
Integer, String, vb. 
Disk dosyaları, karmaşık sayılar, matrisler, vb. 
Dolayısıyla, , =,  ve = işleçleri bileşke türlerde
kullanılamaz.
Karşılaştırılabilir nesnelerin sınıfları Comparable arayüzünü
gerçekleştirmek zorundadır.
Comparable arayüzünün compareTo iletisi söz konusu sınıfın
nesneleri arasındaki öncelik sonralık ilişkisini tayin eder.
String ad1 = Tevfik, ad2 = Duygu;
System.out.println(ad1.compareTo(ad2)); // ⇒ 16
Bir diğer seçenek java.util.Comparator arayüzünü
gerçekleştirmektir.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Nesnenin Yaşam Döngüsü
Bazı Önemli İletiler
Hoş Yazım (toString)
Nesnelerin ekran, disk dosyası gibi çıktı aygıtlarına insanlar
tarafından okunabilir gösterimlerini yazmak için toString
iletisi kullanılır.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Nesnenin Yaşam Döngüsü
Bazı Önemli İletiler
Hoş Yazım (toString)
Nesnelerin ekran, disk dosyası gibi çıktı aygıtlarına insanlar
tarafından okunabilir gösterimlerini yazmak için toString
iletisi kullanılır.
Bitiştirme işlecinin (+) işleneni olarak tutacak kullanılması
durumunda, söz konusu nesne ilişkin sınıfın toString metodu
kullanılarak String’e dönüştürülür.
Integer iSayı = new Integer(1234);
System.out.println(iSayı:  + iSayı);
⇓
System.out.println(iSayı:  + iSayı.toString());
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Nesnenin Yaşam Döngüsü
Bazı Önemli İletiler
Hoş Yazım (toString)
Nesnelerin ekran, disk dosyası gibi çıktı aygıtlarına insanlar
tarafından okunabilir gösterimlerini yazmak için toString
iletisi kullanılır.
Bitiştirme işlecinin (+) işleneni olarak tutacak kullanılması
durumunda, söz konusu nesne ilişkin sınıfın toString metodu
kullanılarak String’e dönüştürülür.
Integer iSayı = new Integer(1234);
System.out.println(iSayı:  + iSayı);
⇓
System.out.println(iSayı:  + iSayı.toString());
toString iletisinin varsayılan gerçekleştirimi, nesnenin
tutacağına dair çözülmesi zor bir gösterim üretir. Bunun
istenmemesi durumunda, istenen gerçekleştirime sahip aynı
imzalı bir metot sağlanması gerekir.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Nesnenin Yaşam Döngüsü
Bazı Önemli İletiler
Kıyım Fonksiyonu (hashCode)
Dizileri çekici kılan özellik: doğrudan erişim.
Dizi indislerinin kısıtlayıcı özelliği: indis tamsayı olmak
zorunda.
int[] nüfus = new int[82]; // 0: toplam nüfus
... nüfus[35] ... // İzmir'in nüfusu 
... nüfus[İzmir] ... // İzmir'in nüfusu 
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Nesnenin Yaşam Döngüsü
Bazı Önemli İletiler
Kıyım Fonksiyonu (hashCode)
Dizileri çekici kılan özellik: doğrudan erişim.
Dizi indislerinin kısıtlayıcı özelliği: indis tamsayı olmak
zorunda.
int[] nüfus = new int[82]; // 0: toplam nüfus
... nüfus[35] ... // İzmir'in nüfusu 
... nüfus[İzmir] ... // İzmir'in nüfusu 
Çözüm: Kent adı → Plaka no dönüşümünü gerçekleştiren bir
hashCode metodu sağlamak
Veri Kapları Çerçevesi’ndeki HashMap, HashSet ve
Hashtable kaplarının kullanılması durumunda arka planda
hashCode iletisi kullanılır.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Nesnenin Yaşam Döngüsü
Bazı Önemli İletiler
Kıyım Fonksiyonu (hashCode)
Dizileri çekici kılan özellik: doğrudan erişim.
Dizi indislerinin kısıtlayıcı özelliği: indis tamsayı olmak
zorunda.
int[] nüfus = new int[82]; // 0: toplam nüfus
... nüfus[35] ... // İzmir'in nüfusu 
... nüfus[İzmir] ... // İzmir'in nüfusu 
Çözüm: Kent adı → Plaka no dönüşümünü gerçekleştiren bir
hashCode metodu sağlamak
Veri Kapları Çerçevesi’ndeki HashMap, HashSet ve
Hashtable kaplarının kullanılması durumunda arka planda
hashCode iletisi kullanılır.
hashCode iletisinin varsayılan gerçekleştirimi, tutacağı kıyarak
sonuç döndürür. Bu, aynı içeriğe sahip farklı nesnelerin farklı
kıyım değerlerine sahip olması demektir.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
İletiler
StringBuilder
İçerik
1 Sınıflar ve Nesneler
2 Karakter Katarları
3 Diziler
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
İletiler
StringBuilder
Tanımlama ve Yaratma Blog makalesi
String ad = new String(Tevfik u0041ktuğlu);
String isim = new String(ad); // kopyalama
String yeniİsim = isim; // paylaşma
boolean aynıMı = ad == isim; // aynıMı ← false
aynıMı = isim == yeniİsim; // aynıMı ↞ true
boolean eşitMi = ad.equals(isim); // eşitMi ← true
“Tevfik Aktuğlu”
“Tevfik Aktuğlu”
ad
isim yeniİsim
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
İletiler
StringBuilder
String.valueOf
String.valueOf(String) özel bir bellek bölgesi kullanarak aynı
değerli karakter katarları için tek nesne yaratılmasını sağlar.
String ad = String.valueOf(Tevfik Aktuğlu);
String isim = String.valueOf(Tevfik +  Aktuğlu);
String yeniİsim = String.valueOf(isim);
boolean aynıMı = ad == isim; // aynıMı ← true
aynıMı = isim == yeniİsim; // aynıMı ↞ true
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
İletiler
StringBuilder
String.valueOf
String.valueOf(String) özel bir bellek bölgesi kullanarak aynı
değerli karakter katarları için tek nesne yaratılmasını sağlar.
String ad = String.valueOf(Tevfik Aktuğlu);
String isim = String.valueOf(Tevfik +  Aktuğlu);
String yeniİsim = String.valueOf(isim);
boolean aynıMı = ad == isim; // aynıMı ← true
aynıMı = isim == yeniİsim; // aynıMı ↞ true
Diğer String.valueOf metotları, yaratılan nesne sayısını en aza
indirme gayreti içine girmezler.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
İletiler
StringBuilder
String.format
int a = 37, b = 73;
// sonuçStr ← a(37) + b(111) = 6en
String sonuçStr =
String.format(a(%d) + b(%o) = %x%n, a, b, a+b);
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
İletiler
StringBuilder
String.format
int a = 37, b = 73;
// sonuçStr ← a(37) + b(111) = 6en
String sonuçStr =
String.format(a(%d) + b(%o) = %x%n, a, b, a+b);
import java.util.GregorianCalendar;
...
GregorianCalendar kuruluş =
new GregorianCalendar(1923, 9, 29);
System.out.format(Kuruluş: %1$td.%1$tm.%tY, kuruluş);
// ⇒ Kuruluş: 29.10.1923
int buAn = System.currentTimeMillis();
System.out.format(Bu an: %1$td.%1$tm.%ty, buAn);
// ⇒ Bu an: 10.08.15
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
İletiler
StringBuilder
String.format
Dönüşüm Belirteçleri
Argüman türü Belirteç Dönüşüm sonucu
d Ondalık tamsayı
Tamsayı o 8’li tamsayı
x,X 16’lı tamsayı
e, E Bilimsel gösterimli sayı
f Ondalık sayı
Kayan noktalı g, G Bilimsel gösterimli veya ondalık sayı
a, A Bellek temsilindeki kesir ve mantisin
16’lı tabandaki bilimsel gösterimi
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
İletiler
StringBuilder
String.format
Dönüşüm Belirteçleri (2)
Argüman türü Belirteç Dönüşüm sonucu
Karakter c Unicode karakter
b, B true veya false
Genel h, H hashCode iletisinin sonucu
s, S formatTo veya toString iletisinin sonucu
Tarih-Zaman t, T Takip eden ek belirtece bağlı olarak
tarih-zaman bileşenlerinden biri
% % karakteri
n Yeni satır karakteri
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
İletiler
StringBuilder
String Sabitleri
String satır = Katır kutur;
String satır2 = Katır kutur;
boolean aynıMı = satır == satır2; // aynıMı ← true
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
İletiler
StringBuilder
String Sabitleri
String satır = Katır kutur;
String satır2 = Katır kutur;
boolean aynıMı = satır == satır2; // aynıMı ← true
String satır3 = Katır +   + kutur;
String katır = Katır, kutur = kutur;
String satır4 = katır +   + kutur;
aynıMı = satır == satır3; // aynıMı ↞ false
aynıMı = satır == satır4; // aynıMı ↞ false
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
İletiler
StringBuilder
String Sabitleri
String satır = Katır kutur;
String satır2 = Katır kutur;
boolean aynıMı = satır == satır2; // aynıMı ← true
String satır3 = Katır +   + kutur;
String katır = Katır, kutur = kutur;
String satır4 = katır +   + kutur;
aynıMı = satır == satır3; // aynıMı ↞ false
aynıMı = satır == satır4; // aynıMı ↞ false
String satır5 = (katır +   + kutur).intern();
aynıMı = satır == satır5; // aynıMı ↞ true
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
İletiler
StringBuilder
İletiler
Bitiştirme
Bitiştirme işleci: +
İşlenenlerinin bitiştirilmiş hali olan yeni bir String nesnesini
gösteren tutacağı döndürür.
İşlenenlerden birinin String olmaması durumunda, söz konusu
işlenen String’e çevrilir.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
İletiler
StringBuilder
İletiler
Bitiştirme
Bitiştirme işleci: +
İşlenenlerinin bitiştirilmiş hali olan yeni bir String nesnesini
gösteren tutacağı döndürür.
İşlenenlerden birinin String olmaması durumunda, söz konusu
işlenen String’e çevrilir.
concat
Argümanın boş katar olması halinde, ileti alıcı döndürülür.
String ktr1 = asd, ktr2 = ;
// aynıMı ← false
boolean aynıMı = ktr1 == ktr1 + ktr2;
aynıMı = ktr1 == ktr1.concat(ktr2); // aynıMı ↞ true
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
İletiler
StringBuilder
İletiler
Bitiştirme
Bitiştirme işleci: +
İşlenenlerinin bitiştirilmiş hali olan yeni bir String nesnesini
gösteren tutacağı döndürür.
İşlenenlerden birinin String olmaması durumunda, söz konusu
işlenen String’e çevrilir.
concat
Argümanın boş katar olması halinde, ileti alıcı döndürülür.
String ktr1 = asd, ktr2 = ;
// aynıMı ← false
boolean aynıMı = ktr1 == ktr1 + ktr2;
aynıMı = ktr1 == ktr1.concat(ktr2); // aynıMı ↞ true
Argümanın String olmaması durumu, derleyici tarafından
hata olarak bildirilir.
String ktr3 = ktr3.concat(3); // Derleme hatası!
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
İletiler
StringBuilder
İletiler
Öznitelik Sorgulama
Boşluk denetimi: empty
boolean boşMu =  .isEmpty(); // boşMu ← false
boşMu = .isEmpty(); // boşMu ↞ true
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
İletiler
StringBuilder
İletiler
Öznitelik Sorgulama
Boşluk denetimi: empty
Uzunluk sorgusu: length katardaki char sayısını döndürür.
String kankalar = AlittVeli;
System.out.print(kankalar); // ⇒ Ali Veli
System.out.print(kankalar.length()); // ⇒ 9
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
İletiler
StringBuilder
İletiler
Öznitelik Sorgulama
Boşluk denetimi: empty
Uzunluk sorgusu: length katardaki char sayısını döndürür.
codePointCount katardaki Unicode karakteri sayısını
döndürür.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
İletiler
StringBuilder
İletiler
Öznitelik Sorgulama
Boşluk denetimi: empty
Uzunluk sorgusu: length katardaki char sayısını döndürür.
codePointCount katardaki Unicode karakteri sayısını
döndürür.
Eleman sorgusu: charAt, codePointAt
char A = N. AKTUĞLU.charAt(3); // A ← 'A'
int sıra = N. AKTUĞLU.codePointAt(3); // sıra ← 65
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
İletiler
StringBuilder
Her char Karakter Değildir
import static java.lang.System.out;
public class UnicodeKarakterler {
public static void main(String[] ksa) {
String ktr = new String(new int[]{'G', 'Ğ', 0x1D11E}, 0, 3);
int n = ktr.length();
out.print(codePointCount():  + ktr.codePointCount(0, n));
out.println( length():  + n);
for (int i = 0; i  n; i++) {
out.print(charAt( + i + ):  + ktr.charAt(i));
out.format( codePointAt(%d): %x%n, i, ktr.codePointAt(i));
}
out.format(%x - %1$c%n,
Character.toCodePoint(ktr.charAt(2), ktr.charAt(3)));
} // void main(String[]) sonu
} // UnicodeKarakterler sınıfının sonu
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
İletiler
StringBuilder
Her char Karakter Değildir
javac -encoding utf8 UnicodeKarakterler.java
java UnicodeKarakterler
codePointCount(): 3 length(): 4
charAt(0): G codePointAt(0): 47
charAt(1): Ğ codePointAt(1): 11e
charAt(2): ? codePointAt(2): 1d11e
charAt(3): ? codePointAt(3): dd1e
1d11e - 
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
İletiler
StringBuilder
İletiler
Eşitlik Denetimi
equals iletisi veya == işlecinden hangisinin kullanılması gerektiğine
karar verirken şunların hatırlanması yararlı olacaktır.
new işlecinin her kullanımı farklı bir nesne yaratır.
String sabitlerinin yeri new işlecinin kullandığından farklı,
özel bir bellek havuzundan ayrılır ve her String sabitinin tek
kopyası tutulur.
İlkleme/atama deyiminin işini yeni String nesnesi yaratarak
gören bir öğe içermesi durumunda, nesnenin yeri, kendisine
eşit bir nesne bulunsa bile, özel bellek havuzundan ayrılmaz.
Yaratılmakta olan nesne için yerin özel bellek havuzundan
ayrılması intern iletisi ile garanti edilir.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
İletiler
StringBuilder
İletiler
Eşitlik Denetimi
equals iletisi veya == işlecinden hangisinin kullanılması gerektiğine
karar verirken şunların hatırlanması yararlı olacaktır.
new işlecinin her kullanımı farklı bir nesne yaratır.
String sabitlerinin yeri new işlecinin kullandığından farklı,
özel bir bellek havuzundan ayrılır ve her String sabitinin tek
kopyası tutulur.
İlkleme/atama deyiminin işini yeni String nesnesi yaratarak
gören bir öğe içermesi durumunda, nesnenin yeri, kendisine
eşit bir nesne bulunsa bile, özel bellek havuzundan ayrılmaz.
Yaratılmakta olan nesne için yerin özel bellek havuzundan
ayrılması intern iletisi ile garanti edilir.
Katar içeriğindeki alfabetik karakterlerin büyük/küçük ayırt
etmeksizin denetlenmesi için equalsIgnoreCase iletisi
kullanılmalıdır.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
İletiler
StringBuilder
İletiler
Karşılaştırma
Büyük/küçük alfabetik karakter ayrımı
// önceByk ← true
boolean önceByk = A.compareTo(a)  0;
// önceByk ↞ false
önceByk = A.compareToIgnoreCase(a)  0;
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
İletiler
StringBuilder
İletiler
Karşılaştırma
Büyük/küçük alfabetik karakter ayrımı
Alfabetik karakterlerin sırası şaşırtabilir.
// şÖncet ← false!
boolean şÖncet = ş.compareTo(t)  0;
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
İletiler
StringBuilder
İletiler
Karşılaştırma
Büyük/küçük alfabetik karakter ayrımı
Alfabetik karakterlerin sırası şaşırtabilir.
// şÖncet ← false!
boolean şÖncet = ş.compareTo(t)  0;
Çözüm, Y11E desteğinden yararlanmaktan geçer.
import java.text.Collator;
import java.util.Locale;
...
Collator tr = Collator.getInstance(new Locale(tr));
// şÖncet ← true
boolean şÖncet = tr.compare(ş, t)  0;
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
İletiler
StringBuilder
İletiler
Dilimleme ve Dönüştürme
Dilimleme: substring
String ad = new String(Tevfik Aktuğlu);
// ilkAd ← Tevfik
String ilkAd = ad.substring(0, 6);
// Aşağıdaki satır String yeniAd = ad; ile eşdeğerdir
String yeniAd = ad.substring(0);
boolean aynıMı = yeniAd == ad; // aynıMı ← true
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
İletiler
StringBuilder
İletiler
Dilimleme ve Dönüştürme
Dilimleme: substring
String ad = new String(Tevfik Aktuğlu);
// ilkAd ← Tevfik
String ilkAd = ad.substring(0, 6);
// Aşağıdaki satır String yeniAd = ad; ile eşdeğerdir
String yeniAd = ad.substring(0);
boolean aynıMı = yeniAd == ad; // aynıMı ← true
Dönüştürme
Alfabetik karakter dönüşümü: toLowerCase ve toUpperCase
Uçlardaki boşluklardan arındırma: trim
// uzunluk ← 2
int uzunluk = tO0 nr .trim().length();
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
İletiler
StringBuilder
İletiler
Arama
indexOf ve lastIndexOf
String tkrlm = Bir berber bir berbere...;
int ilkber = tkrlm.indexOf(ber); // ilkber ← 4
int ber2 = tkrlm.indexOf(ber, 5); // ber2 ← 7
int sonber = tkrlm.lastIndexOf(ber); // sonber ← 18
int ber3 = tkrlm.lastIndexOf(ber, 17); // ber3 ← 15
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
İletiler
StringBuilder
İletiler
Arama
indexOf ve lastIndexOf
String tkrlm = Bir berber bir berbere...;
int ilkber = tkrlm.indexOf(ber); // ilkber ← 4
int ber2 = tkrlm.indexOf(ber, 5); // ber2 ← 7
int sonber = tkrlm.lastIndexOf(ber); // sonber ← 18
int ber3 = tkrlm.lastIndexOf(ber, 17); // ber3 ← 15
Özel durumlar için startsWith ve endsWith kullanılabilir.
startsWith(x) ≡ indexOf(x) ==0
startsWith(x, n) ≡ substring(n).indexOf(x) ==0
endsWith(x) ≡ lastIndexOf(x)+x.length() ==length()
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
İletiler
StringBuilder
StringBuilder
String nesnelerinin sabit olması, kimi zaman hem yerden
hem de zamandan kaybetmemize neden olabilir.
String fatih = 2 + .Mehmet;
Üç nesne (”2”, ”.Mehmet” ve ”2.Mehmet”) yaratılırken sadece
üçüncüsü kullanılmaktadır.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
İletiler
StringBuilder
StringBuilder
String nesnelerinin sabit olması, kimi zaman hem yerden
hem de zamandan kaybetmemize neden olabilir.
String fatih = 2 + .Mehmet;
Üç nesne (”2”, ”.Mehmet” ve ”2.Mehmet”) yaratılırken sadece
üçüncüsü kullanılmaktadır.
Bu gibi durumlarda, karakter katarı içeriğini yapıcı desenine
uygun bir biçimde peyderpey oluşturma olanağını tanıyan
StringBuilder sınıfının kullanılması daha doğru olacaktır.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
İletiler
StringBuilder
StringBuilder
String nesnelerinin sabit olması, kimi zaman hem yerden
hem de zamandan kaybetmemize neden olabilir.
String fatih = 2 + .Mehmet;
Üç nesne (”2”, ”.Mehmet” ve ”2.Mehmet”) yaratılırken sadece
üçüncüsü kullanılmaktadır.
Bu gibi durumlarda, karakter katarı içeriğini yapıcı desenine
uygun bir biçimde peyderpey oluşturma olanağını tanıyan
StringBuilder sınıfının kullanılması daha doğru olacaktır.
StringBuilder ile aynı arayüze sahip StringBuffer sınıfı,
söz konusu işlevselliği izlek güvenli bir biçimde sağlar.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
İletiler
StringBuilder
StringBuilder
StringBuilder fatih = new StringBuilder(2);
fatih.append(Mehmet).insert(1, .);
System.out.print(Sığa:  + fatih.capacity());
System.out.println( Uzunluk:  + fatih.length());
// ⇒ Sığa: 17 Uzunluk: 8
fatih.replace(0, 1, III).deleteCharAt(0);
System.out.println(fatih); // ⇒ II.Mehmet
fatih.delete(1, 2).setCharAt(0, '2').trimToSize();
System.out.println(Sığa:  + fatih.capacity());
// ⇒ Sığa: 8
String padişah = fatih.toString();
// ≡ String padişah = new String(fatih);
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
İletiler
StringBuilder
StringBuilder
StringBuilder fatih = new StringBuilder(2);
fatih.append(Mehmet).insert(1, .);
System.out.print(Sığa:  + fatih.capacity());
System.out.println( Uzunluk:  + fatih.length());
// ⇒ Sığa: 17 Uzunluk: 8
fatih.replace(0, 1, III).deleteCharAt(0);
System.out.println(fatih); // ⇒ II.Mehmet
fatih.delete(1, 2).setCharAt(0, '2').trimToSize();
System.out.println(Sığa:  + fatih.capacity());
// ⇒ Sığa: 8
String padişah = fatih.toString();
// ≡ String padişah = new String(fatih);
Karakter katarı kümeleme aracı olarak düzenli deyimler: Blog makalesi
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
Çok Boyutlu Diziler
java.util.Arrays
İçerik
1 Sınıflar ve Nesneler
2 Karakter Katarları
3 Diziler
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
Çok Boyutlu Diziler
java.util.Arrays
Tanımlama ve Yaratma Blog makalesi
int[] notlar = new int[50];
int[] notlar2;
...
int sığa = grdKnlı.nextInt();
notlar2 = new int[sığa];
notlar
0
1
...
notlar.length-1
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
Çok Boyutlu Diziler
java.util.Arrays
Tutacak ve Dizi Nesnesi
Tutacak ilişkili olduğu dizi nesnesini temsil eder. Bu nesne,
diğer bileşenlerin yanısıra elemanların saklanacağı kabı da
bulundurur.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
Çok Boyutlu Diziler
java.util.Arrays
Tutacak ve Dizi Nesnesi
Tutacak ilişkili olduğu dizi nesnesini temsil eder. Bu nesne,
diğer bileşenlerin yanısıra elemanların saklanacağı kabı da
bulundurur.
Diziler statik kaplardır; tutacak.length ile öğrenilebilecek dizi
nesnesinin sığası, çalışma anında belirlenebilmesine karşılık,
değiştirilemez. java.util.Vector
İndis değeri, [0..tutacak.length) aralığından olmalıdır. Sınır
dışı bir değer ArrayIndexOutOfBoundsException ayrıksı
durum nesnesi ile bildirilir.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
Çok Boyutlu Diziler
java.util.Arrays
Tutacak ve Dizi Nesnesi
Tutacak ilişkili olduğu dizi nesnesini temsil eder. Bu nesne,
diğer bileşenlerin yanısıra elemanların saklanacağı kabı da
bulundurur.
Diziler statik kaplardır; tutacak.length ile öğrenilebilecek dizi
nesnesinin sığası, çalışma anında belirlenebilmesine karşılık,
değiştirilemez. java.util.Vector
İndis değeri, [0..tutacak.length) aralığından olmalıdır. Sınır
dışı bir değer ArrayIndexOutOfBoundsException ayrıksı
durum nesnesi ile bildirilir.
Dizi içeriği eleman türünün varsayılan ilk değeri ile ilklenir.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
Çok Boyutlu Diziler
java.util.Arrays
İlkleyerek Dizi Yaratma
// Aşağıdaki tanım şu dört komuta denk
// String[] kankalar = new String[3];
// kankalar[0] = Ali;
// kankalar[1] = Veli;
// kankalar[2] = Selami;
String[] kankalar = {Ali, Veli, Selami};
kankalar
“Ali”
“Veli”
“Selami”
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
Çok Boyutlu Diziler
java.util.Arrays
Tür Uyumluluk
short[] shortDizi = new short[10];
short[] shortDizi2 = new short[20];
...
shortDizi2 = shortDizi;
shortDizi2[5] = 125; // shortDizi[5]'i de değiştirir!
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
Çok Boyutlu Diziler
java.util.Arrays
Tür Uyumluluk
short[] shortDizi = new short[10];
short[] shortDizi2 = new short[20];
...
shortDizi2 = shortDizi;
shortDizi2[5] = 125; // shortDizi[5]'i de değiştirir!
Tutacak ve dizi nesnesi, Java programlama dili tarafından
tanımlanmış özel bir sınıfa aittir. Örneğin, shortDizi ve ilişkin dizi
nesnesi short[] sınıfına aittir. Bu sınıf, sığasına bakmaksızın tüm
short elemanlı dizilerin ait olduğu sınıfı temsil eder.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
Çok Boyutlu Diziler
java.util.Arrays
Tür Uyumluluk
short[] shortDizi = new short[10];
short[] shortDizi2 = new short[20];
...
shortDizi2 = shortDizi;
shortDizi2[5] = 125; // shortDizi[5]'i de değiştirir!
Tutacak ve dizi nesnesi, Java programlama dili tarafından
tanımlanmış özel bir sınıfa aittir. Örneğin, shortDizi ve ilişkin dizi
nesnesi short[] sınıfına aittir. Bu sınıf, sığasına bakmaksızın tüm
short elemanlı dizilerin ait olduğu sınıfı temsil eder.
equals, toString gibi tüm nesnelere gönderilebilecek iletileri
barındıran Object sınıfındakilere ek olarak, dizi nesnelerine [] işleci
yoluyla iki ileti gönderilebilir: eleman erişim ve eleman güncelleme.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
Çok Boyutlu Diziler
java.util.Arrays
Tür Uyumluluk
byte b = ...;
int i = b; // Tamam
...
byte[] byteDizi = new byte[10];
int[] intDizi = byteDizi; // Derleme hatası!
İlkel türler arasındaki kapsama ilişkisi, söz konusu türlerin
değerlerini içeren diziler için geçerli değildir.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
Çok Boyutlu Diziler
java.util.Arrays
Çok Boyutlu Diziler
char[][] bulmaca = new char[2][3];
bulmaca
[0]
[1]
[0][0]
[0][1]
[0][2] [1][0]
[1][1]
[1][2]
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
Çok Boyutlu Diziler
java.util.Arrays
Çok Boyutlu Diziler
char[][] adListesi = new char[3][];
adListesi[0] = new char[3];
adListesi[1] = new char[4];
adListesi[2] = new char[]{'S', 'e', 'l', 'a', 'm', 'i'};
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
Çok Boyutlu Diziler
java.util.Arrays
Kopyalama Blog makalesi
int[] notlar= {60, 70, 80};
int[] yeniNotlar;
...
yeniNotlar = notlar;
yeniNotlar[1] = 75;
// notlar[1], yeniNotlar[1] ↞ 75
notlar
yeniNotlar
60
70 → 75
80
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
Çok Boyutlu Diziler
java.util.Arrays
Kopyalama Blog makalesi
int[] notlar= {60, 70, 80};
int[] yeniNotlar;
...
yeniNotlar = notlar;
yeniNotlar[1] = 75;
// notlar[1], yeniNotlar[1] ↞ 75
import java.util.Arrays;
...
yeniNotlar = Arrays.copyOf(notlar, notlar.length);
yeniNotlar[1] = 75;
// yeniNotlar[1] ↞ 75
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
Çok Boyutlu Diziler
java.util.Arrays
Kopyalama Blog makalesi
int[] notlar= {60, 70, 80};
int[] yeniNotlar;
...
yeniNotlar = notlar;
yeniNotlar[1] = 75;
// notlar[1], yeniNotlar[1] ↞ 75
import java.util.Arrays;
...
yeniNotlar = Arrays.copyOf(notlar, notlar.length);
yeniNotlar[1] = 75;
// yeniNotlar[1] ↞ 75
Dilim kopyalama: Arrays.copyOfRange(dz, ilk, son)
[ilk..son) aralığındaki dilimi kopyalar.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
Çok Boyutlu Diziler
java.util.Arrays
Eşitlik Denetimi
yeniNotlar = Arrays.copyOf(notlar, notlar.length);
System.out.format(==: %b, yeniNotlar == notlar);
// ⇒ ==: false
System.out.format(eq: %B,
yeniNotlar.equals(notlar)); // ⇒ eq: FALSE
System.out.format(Arrays.eq: %b,
Arrays.equals(yeniNotlar,notlar)); // ⇒ Arrays.eq: true
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
Çok Boyutlu Diziler
java.util.Arrays
Eşitlik Denetimi
yeniNotlar = Arrays.copyOf(notlar, notlar.length);
System.out.format(==: %b, yeniNotlar == notlar);
// ⇒ ==: false
System.out.format(eq: %B,
yeniNotlar.equals(notlar)); // ⇒ eq: FALSE
System.out.format(Arrays.eq: %b,
Arrays.equals(yeniNotlar,notlar)); // ⇒ Arrays.eq: true
char[][] dz = new char[2][3], dz2 = new char[2][3];
dz2[0][0] = dz[0][0] = 'a'; dz2[1][0] = dz[1][0] = 'd';
dz2[0][1] = dz[0][1] = 'b'; dz2[1][1] = dz[1][1] = 'e';
dz2[0][2] = dz[0][2] = 'c'; dz2[1][2] = dz[1][2] = 'f';
System.out.print(Arrays.equals(dz, dz2)); // ⇒ false
System.out.print(Arrays.deepEquals(dz, dz2)); // ⇒ true
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
Çok Boyutlu Diziler
java.util.Arrays
Toptan Güncelleme
String[] vatandaşlıkBilgisi = new String[50];
Arrays.fill(vatandaşlıkBilgisi, TC);
Dilim güncelleme: Arrays.fill(dz, ilk, son, yeniDeğer)
dz’nin [ilk..son) aralığındaki dilimini yeniDeğer ile günceller.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
Çok Boyutlu Diziler
java.util.Arrays
Hoş Yazım
String[] çete = {Ali, Veli, Selami};
System.out.print(toString:  + çete);
// ⇒ toString: [Ljava.lang.String;@1a46e30
System.out.print(Arrays.toString:  +
Arrays.toString(çete));
// ⇒ Arrays.toString: [Ali, Veli, Selami]
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
Çok Boyutlu Diziler
java.util.Arrays
Hoş Yazım
String[] çete = {Ali, Veli, Selami};
System.out.print(toString:  + çete);
// ⇒ toString: [Ljava.lang.String;@1a46e30
System.out.print(Arrays.toString:  +
Arrays.toString(çete));
// ⇒ Arrays.toString: [Ali, Veli, Selami]
Derin hoş yazım: Arrays.deepToString
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
Çok Boyutlu Diziler
java.util.Arrays
Sıralama
String ali = new String(Ali);
String ali2 = new String(Ali);
String[] ahbapÇavuşlar = {Veli, ali, Selami, ali2};
System.out.println(Arrays.toString(ahbapÇavuşlar));
// ⇒ [Veli, Ali, Selami, Ali]
Arrays.sort(ahbapÇavuşlar);
System.out.println(Arrays.toString(ahbapÇavuşlar));
// ⇒ [Ali, Ali, Selami, Veli]
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
Çok Boyutlu Diziler
java.util.Arrays
Sıralama
String ali = new String(Ali);
String ali2 = new String(Ali);
String[] ahbapÇavuşlar = {Veli, ali, Selami, ali2};
System.out.println(Arrays.toString(ahbapÇavuşlar));
// ⇒ [Veli, Ali, Selami, Ali]
Arrays.sort(ahbapÇavuşlar);
System.out.println(Arrays.toString(ahbapÇavuşlar));
// ⇒ [Ali, Ali, Selami, Veli]
Eleman türünün karşılaştırılabilir olması gerekir.
Sıralama yerinde yapılır. Yani, argüman olarak geçirilen dizi
değiştirilerek iş görülür; eşit değerli konumların göreceli yeri
değişmez.
Dilim sıralama: Arrays.sort(dz, ilk, son) [ilk..son) indis
aralığındaki dilimi sıralar.
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
Çok Boyutlu Diziler
java.util.Arrays
İkili Arama
System.out.print(Arrays.toString(ahbapÇavuşlar));
// → [Ali, Ali, Selami, Veli]
// konum ← 1
int konum = Arrays.binarySearch(ahbapÇavuşlar, Ali);
// konum ↞ 3
konum = Arrays.binarySearch(ahbapÇavuşlar, Veli);
// konum ↞ -3
konum = Arrays.binarySearch(ahbapÇavuşlar, Aliye);
// konum ↞ -3
konum = Arrays.binarySearch(ahbapÇavuşlar, 2, 4, Ali);
Tevfik AKTUĞLU Java Programlama Dili
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sınıflar ve Nesneler
Karakter Katarları
Diziler
Tanımlama ve Yaratma
Çok Boyutlu Diziler
java.util.Arrays
İkili Arama
System.out.print(Arrays.toString(ahbapÇavuşlar));
// → [Ali, Ali, Selami, Veli]
// konum ← 1
int konum = Arrays.binarySearch(ahbapÇavuşlar, Ali);
// konum ↞ 3
konum = Arrays.binarySearch(ahbapÇavuşlar, Veli);
// konum ↞ -3
konum = Arrays.binarySearch(ahbapÇavuşlar, Aliye);
// konum ↞ -3
konum = Arrays.binarySearch(ahbapÇavuşlar, 2, 4, Ali);
Eleman türünün karşılaştırılabilir olması gerekir.
Döndürülen eksi değer aramanın başarısız olduğunu ve
anahtarın sıralı diziye eklenmesi durumunda gireceği konumu
verir.
Tevfik AKTUĞLU Java Programlama Dili

More Related Content

Viewers also liked

Second lifeexploringweek1ppt
Second lifeexploringweek1pptSecond lifeexploringweek1ppt
Second lifeexploringweek1ppt
harringtonbelinda
 
The Thirteen Colonies
The Thirteen ColoniesThe Thirteen Colonies
The Thirteen Colonies
Blue_Wonder95
 
Presentation2
Presentation2Presentation2
Presentation2
chrisrosenberg
 
Moodlen aktiviteetit ja aineistot
Moodlen aktiviteetit ja aineistotMoodlen aktiviteetit ja aineistot
Moodlen aktiviteetit ja aineistot
KirsiViitanen
 
A MAGIA DAS LANTERNAS
A MAGIA DAS LANTERNASA MAGIA DAS LANTERNAS
A MAGIA DAS LANTERNAS
Washington Ferreira
 
Causes of civil war
Causes of civil warCauses of civil war
Causes of civil war
Blue_Wonder95
 
006 Uml Modelleri Gereksinimler [120 Slides]
006 Uml Modelleri Gereksinimler [120 Slides]006 Uml Modelleri Gereksinimler [120 Slides]
006 Uml Modelleri Gereksinimler [120 Slides]
Erol Bozkurt
 
Piotr Sut CV
Piotr Sut CVPiotr Sut CV
Piotr Sut CV
Piotr Sut
 
Project Efiase Presentation
Project Efiase PresentationProject Efiase Presentation
Project Efiase Presentation
project_efiase
 
Educational technology objectives
Educational technology objectivesEducational technology objectives
Educational technology objectives
harringtonbelinda
 
[Curso Java Basico] Aula 60: Escopo de Variaveis
[Curso Java Basico] Aula 60: Escopo de Variaveis[Curso Java Basico] Aula 60: Escopo de Variaveis
[Curso Java Basico] Aula 60: Escopo de Variaveis
Loiane Groner
 
Class Diagram
Class DiagramClass Diagram
Class Diagram
Seyfullah Demir
 
BMC Engage 2015 Breakout Session #420 - #ITSM_SUCCESS-Final_3.5 (1)
BMC Engage 2015 Breakout Session #420 - #ITSM_SUCCESS-Final_3.5 (1)BMC Engage 2015 Breakout Session #420 - #ITSM_SUCCESS-Final_3.5 (1)
BMC Engage 2015 Breakout Session #420 - #ITSM_SUCCESS-Final_3.5 (1)
Phil Bautista
 
[Curso Java Basico] Aula 61: Passagem de parametros por valor e referencia
[Curso Java Basico] Aula 61: Passagem de parametros por valor e referencia[Curso Java Basico] Aula 61: Passagem de parametros por valor e referencia
[Curso Java Basico] Aula 61: Passagem de parametros por valor e referencia
Loiane Groner
 
[Curso Java Basico] Aula 59: Importacao estatica (static import)
[Curso Java Basico] Aula 59: Importacao estatica (static import)[Curso Java Basico] Aula 59: Importacao estatica (static import)
[Curso Java Basico] Aula 59: Importacao estatica (static import)
Loiane Groner
 
[Curso Java Basico] Aula 62: Varargs
[Curso Java Basico] Aula 62: Varargs[Curso Java Basico] Aula 62: Varargs
[Curso Java Basico] Aula 62: Varargs
Loiane Groner
 
[Curso Java Basico] Aula 63: printf
[Curso Java Basico] Aula 63: printf[Curso Java Basico] Aula 63: printf
[Curso Java Basico] Aula 63: printf
Loiane Groner
 
Data Science and Machine Learning Using Python and Scikit-learn
Data Science and Machine Learning Using Python and Scikit-learnData Science and Machine Learning Using Python and Scikit-learn
Data Science and Machine Learning Using Python and Scikit-learn
Asim Jalis
 
Sulautuvan oppimisen lähtökohdat ja verkko-opetuksen laatu
Sulautuvan oppimisen lähtökohdat ja verkko-opetuksen laatuSulautuvan oppimisen lähtökohdat ja verkko-opetuksen laatu
Sulautuvan oppimisen lähtökohdat ja verkko-opetuksen laatu
KirsiViitanen
 

Viewers also liked (19)

Second lifeexploringweek1ppt
Second lifeexploringweek1pptSecond lifeexploringweek1ppt
Second lifeexploringweek1ppt
 
The Thirteen Colonies
The Thirteen ColoniesThe Thirteen Colonies
The Thirteen Colonies
 
Presentation2
Presentation2Presentation2
Presentation2
 
Moodlen aktiviteetit ja aineistot
Moodlen aktiviteetit ja aineistotMoodlen aktiviteetit ja aineistot
Moodlen aktiviteetit ja aineistot
 
A MAGIA DAS LANTERNAS
A MAGIA DAS LANTERNASA MAGIA DAS LANTERNAS
A MAGIA DAS LANTERNAS
 
Causes of civil war
Causes of civil warCauses of civil war
Causes of civil war
 
006 Uml Modelleri Gereksinimler [120 Slides]
006 Uml Modelleri Gereksinimler [120 Slides]006 Uml Modelleri Gereksinimler [120 Slides]
006 Uml Modelleri Gereksinimler [120 Slides]
 
Piotr Sut CV
Piotr Sut CVPiotr Sut CV
Piotr Sut CV
 
Project Efiase Presentation
Project Efiase PresentationProject Efiase Presentation
Project Efiase Presentation
 
Educational technology objectives
Educational technology objectivesEducational technology objectives
Educational technology objectives
 
[Curso Java Basico] Aula 60: Escopo de Variaveis
[Curso Java Basico] Aula 60: Escopo de Variaveis[Curso Java Basico] Aula 60: Escopo de Variaveis
[Curso Java Basico] Aula 60: Escopo de Variaveis
 
Class Diagram
Class DiagramClass Diagram
Class Diagram
 
BMC Engage 2015 Breakout Session #420 - #ITSM_SUCCESS-Final_3.5 (1)
BMC Engage 2015 Breakout Session #420 - #ITSM_SUCCESS-Final_3.5 (1)BMC Engage 2015 Breakout Session #420 - #ITSM_SUCCESS-Final_3.5 (1)
BMC Engage 2015 Breakout Session #420 - #ITSM_SUCCESS-Final_3.5 (1)
 
[Curso Java Basico] Aula 61: Passagem de parametros por valor e referencia
[Curso Java Basico] Aula 61: Passagem de parametros por valor e referencia[Curso Java Basico] Aula 61: Passagem de parametros por valor e referencia
[Curso Java Basico] Aula 61: Passagem de parametros por valor e referencia
 
[Curso Java Basico] Aula 59: Importacao estatica (static import)
[Curso Java Basico] Aula 59: Importacao estatica (static import)[Curso Java Basico] Aula 59: Importacao estatica (static import)
[Curso Java Basico] Aula 59: Importacao estatica (static import)
 
[Curso Java Basico] Aula 62: Varargs
[Curso Java Basico] Aula 62: Varargs[Curso Java Basico] Aula 62: Varargs
[Curso Java Basico] Aula 62: Varargs
 
[Curso Java Basico] Aula 63: printf
[Curso Java Basico] Aula 63: printf[Curso Java Basico] Aula 63: printf
[Curso Java Basico] Aula 63: printf
 
Data Science and Machine Learning Using Python and Scikit-learn
Data Science and Machine Learning Using Python and Scikit-learnData Science and Machine Learning Using Python and Scikit-learn
Data Science and Machine Learning Using Python and Scikit-learn
 
Sulautuvan oppimisen lähtökohdat ja verkko-opetuksen laatu
Sulautuvan oppimisen lähtökohdat ja verkko-opetuksen laatuSulautuvan oppimisen lähtökohdat ja verkko-opetuksen laatu
Sulautuvan oppimisen lähtökohdat ja verkko-opetuksen laatu
 

Similar to Bileşke Türler

Komut satırı JAVA
Komut satırı JAVAKomut satırı JAVA
Komut satırı JAVA
Ali Rıza SARAL
 
Azerbaycan Qafqaz Üniversitesi - (Java Persistence API) JPA ve Hibernate ile ORM
Azerbaycan Qafqaz Üniversitesi - (Java Persistence API) JPA ve Hibernate ile ORMAzerbaycan Qafqaz Üniversitesi - (Java Persistence API) JPA ve Hibernate ile ORM
Azerbaycan Qafqaz Üniversitesi - (Java Persistence API) JPA ve Hibernate ile ORM
Mimar Aslan
 
Javascript Programming with OOP
Javascript Programming with OOP Javascript Programming with OOP
Javascript Programming with OOP
Uğur Acar
 
Bilginç IT Academy - JPA (Java Persistence API)
Bilginç IT Academy - JPA (Java Persistence API)Bilginç IT Academy - JPA (Java Persistence API)
Bilginç IT Academy - JPA (Java Persistence API)
Mimar Aslan
 
Java SE 8 Programming
Java SE 8 Programming Java SE 8 Programming
Java SE 8 Programming
Ercan Er
 
Programlama Dili Olarak JAVA - Muhammet ÇAĞATAY
Programlama Dili Olarak JAVA - Muhammet ÇAĞATAYProgramlama Dili Olarak JAVA - Muhammet ÇAĞATAY
Programlama Dili Olarak JAVA - Muhammet ÇAĞATAY
Muhammet ÇAĞATAY
 
Javascript kursu-ankara
Javascript kursu-ankaraJavascript kursu-ankara
Javascript kursu-ankarasersld61
 
Javascript kursu-kartal
Javascript kursu-kartalJavascript kursu-kartal
Javascript kursu-kartalsersld61
 
Ileri seviye javascript by Azer Koculu
Ileri seviye javascript by Azer KoculuIleri seviye javascript by Azer Koculu
Ileri seviye javascript by Azer Koculu
mustafa sarac
 
Javascript kursu-tuzla
Javascript kursu-tuzlaJavascript kursu-tuzla
Javascript kursu-tuzlasersld61
 

Similar to Bileşke Türler (10)

Komut satırı JAVA
Komut satırı JAVAKomut satırı JAVA
Komut satırı JAVA
 
Azerbaycan Qafqaz Üniversitesi - (Java Persistence API) JPA ve Hibernate ile ORM
Azerbaycan Qafqaz Üniversitesi - (Java Persistence API) JPA ve Hibernate ile ORMAzerbaycan Qafqaz Üniversitesi - (Java Persistence API) JPA ve Hibernate ile ORM
Azerbaycan Qafqaz Üniversitesi - (Java Persistence API) JPA ve Hibernate ile ORM
 
Javascript Programming with OOP
Javascript Programming with OOP Javascript Programming with OOP
Javascript Programming with OOP
 
Bilginç IT Academy - JPA (Java Persistence API)
Bilginç IT Academy - JPA (Java Persistence API)Bilginç IT Academy - JPA (Java Persistence API)
Bilginç IT Academy - JPA (Java Persistence API)
 
Java SE 8 Programming
Java SE 8 Programming Java SE 8 Programming
Java SE 8 Programming
 
Programlama Dili Olarak JAVA - Muhammet ÇAĞATAY
Programlama Dili Olarak JAVA - Muhammet ÇAĞATAYProgramlama Dili Olarak JAVA - Muhammet ÇAĞATAY
Programlama Dili Olarak JAVA - Muhammet ÇAĞATAY
 
Javascript kursu-ankara
Javascript kursu-ankaraJavascript kursu-ankara
Javascript kursu-ankara
 
Javascript kursu-kartal
Javascript kursu-kartalJavascript kursu-kartal
Javascript kursu-kartal
 
Ileri seviye javascript by Azer Koculu
Ileri seviye javascript by Azer KoculuIleri seviye javascript by Azer Koculu
Ileri seviye javascript by Azer Koculu
 
Javascript kursu-tuzla
Javascript kursu-tuzlaJavascript kursu-tuzla
Javascript kursu-tuzla
 

Bileşke Türler

  • 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Java Programlama Dili Bileşke Türler Tevfik AKTUĞLU ta-java.blogspot.com Mart 2016 Tevfik AKTUĞLU Java Programlama Dili
  • 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Nesnenin Yaşam Döngüsü Bazı Önemli İletiler İçerik 1 Sınıflar ve Nesneler 2 Karakter Katarları 3 Diziler Tevfik AKTUĞLU Java Programlama Dili
  • 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Nesnenin Yaşam Döngüsü Bazı Önemli İletiler Nesne Yaratma Blog makalesi İlişkin sınıfa dair sınıf dosyasının sınıf yolu (CLASSPATH) üzerinde olması gerekir. Java standardındaki türler otomatik olarak sınıf yolu üzerinde gözükür. Tevfik AKTUĞLU Java Programlama Dili
  • 4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Nesnenin Yaşam Döngüsü Bazı Önemli İletiler Nesne Yaratma Blog makalesi İlişkin sınıfa dair sınıf dosyasının sınıf yolu (CLASSPATH) üzerinde olması gerekir. Java standardındaki türler otomatik olarak sınıf yolu üzerinde gözükür. Sınıf dosyası görünür hale getirilmelidir Tevfik AKTUĞLU Java Programlama Dili
  • 5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Nesnenin Yaşam Döngüsü Bazı Önemli İletiler Nesne Yaratma Blog makalesi İlişkin sınıfa dair sınıf dosyasının sınıf yolu (CLASSPATH) üzerinde olması gerekir. Java standardındaki türler otomatik olarak sınıf yolu üzerinde gözükür. Sınıf dosyası görünür hale getirilmelidir Sınıfın uzun adı kullanılabilir. java.util.Date şuAn = new java.util.Date(); Tevfik AKTUĞLU Java Programlama Dili
  • 6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Nesnenin Yaşam Döngüsü Bazı Önemli İletiler Nesne Yaratma Blog makalesi İlişkin sınıfa dair sınıf dosyasının sınıf yolu (CLASSPATH) üzerinde olması gerekir. Java standardındaki türler otomatik olarak sınıf yolu üzerinde gözükür. Sınıf dosyası görünür hale getirilmelidir Sınıfın uzun adı kullanılabilir. import yönergesi sayesinde sınıfın kısa adı kullanılabilir. import java.util.Date; ... Date şuAn = new Date(); Tevfik AKTUĞLU Java Programlama Dili
  • 7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Nesnenin Yaşam Döngüsü Bazı Önemli İletiler Nesne Yaratma Blog makalesi İlişkin sınıfa dair sınıf dosyasının sınıf yolu (CLASSPATH) üzerinde olması gerekir. Java standardındaki türler otomatik olarak sınıf yolu üzerinde gözükür. Sınıf dosyası görünür hale getirilmelidir Sınıfın uzun adı kullanılabilir. import yönergesi sayesinde sınıfın kısa adı kullanılabilir. java.lang paketindeki tüm türler görünürdür. String ad = "Tevfik"; Tevfik AKTUĞLU Java Programlama Dili
  • 8. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Nesnenin Yaşam Döngüsü Bazı Önemli İletiler Nesne Yaratma Blog makalesi İlişkin sınıfa dair sınıf dosyasının sınıf yolu (CLASSPATH) üzerinde olması gerekir. Java standardındaki türler otomatik olarak sınıf yolu üzerinde gözükür. Sınıf dosyası görünür hale getirilmelidir Sınıfın uzun adı kullanılabilir. import yönergesi sayesinde sınıfın kısa adı kullanılabilir. java.lang paketindeki tüm türler görünürdür. Nesne yaratma iki aşamada gerçekleşir. Yığın bellekten yer ayırma İlkleme Blog makalesi Tevfik AKTUĞLU Java Programlama Dili
  • 9. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Nesnenin Yaşam Döngüsü Bazı Önemli İletiler Nesne Yaratma Blog makalesi İlişkin sınıfa dair sınıf dosyasının sınıf yolu (CLASSPATH) üzerinde olması gerekir. Java standardındaki türler otomatik olarak sınıf yolu üzerinde gözükür. Sınıf dosyası görünür hale getirilmelidir Sınıfın uzun adı kullanılabilir. import yönergesi sayesinde sınıfın kısa adı kullanılabilir. java.lang paketindeki tüm türler görünürdür. Nesne yaratma iki aşamada gerçekleşir. Yığın bellekten yer ayırma İlkleme Blog makalesi new işlecinin her kullanımı yeni bir nesne yaratır. Nesneleri yeniden kullanmak için new işleci yerine fabrika metotlarından yararlanılabilir. Tevfik AKTUĞLU Java Programlama Dili
  • 10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Nesnenin Yaşam Döngüsü Bazı Önemli İletiler Nesne ve Tutacağı Integer intSayı = new Integer(3); Integer intSayı2 = intSayı; Integer intSayı3 = new Integer(3); 3 3 intSayı intSayı2 intSayı3 Tevfik AKTUĞLU Java Programlama Dili
  • 11. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Nesnenin Yaşam Döngüsü Bazı Önemli İletiler İleti Gönderme ve Metot Çağırma Tanım İleti: Türün çevreyle etkileşim amacıyla ilan ettiği soyut işlem Metot: Bir işlemin gerçekleştirimi Çokbiçimlilik: Bir iletinin birden çok metoda bağlanabilmesi Tevfik AKTUĞLU Java Programlama Dili
  • 12. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Nesnenin Yaşam Döngüsü Bazı Önemli İletiler İleti Gönderme ve Metot Çağırma Tanım İleti: Türün çevreyle etkileşim amacıyla ilan ettiği soyut işlem Metot: Bir işlemin gerçekleştirimi Çokbiçimlilik: Bir iletinin birden çok metoda bağlanabilmesi İleti tutacak yoluyla gönderildiği nesnenin türüne uygun seçilen aynı imzalı metodun çalışması ile işini görür. Number sayı = new java.math.BigInteger("123"); System.out.println("Değer: " + sayı.intValue()); sayı = new Integer(11); System.out.println("Değer: " + sayı.intValue()); Tevfik AKTUĞLU Java Programlama Dili
  • 13. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Nesnenin Yaşam Döngüsü Bazı Önemli İletiler İleti Gönderme ve Metot Çağırma Tanım İleti: Türün çevreyle etkileşim amacıyla ilan ettiği soyut işlem Metot: Bir işlemin gerçekleştirimi Çokbiçimlilik: Bir iletinin birden çok metoda bağlanabilmesi İleti tutacak yoluyla gönderildiği nesnenin türüne uygun seçilen aynı imzalı metodun çalışması ile işini görür. Nesne ile ilişkilendirilmeyen tutacaklara ileti gönderilemez. Bu durumda, yapılabilecek tek şey tutacağın null denetimidir. Tevfik AKTUĞLU Java Programlama Dili
  • 14. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Nesnenin Yaşam Döngüsü Bazı Önemli İletiler İleti Gönderme ve Metot Çağırma Tanım İleti: Türün çevreyle etkileşim amacıyla ilan ettiği soyut işlem Metot: Bir işlemin gerçekleştirimi Çokbiçimlilik: Bir iletinin birden çok metoda bağlanabilmesi İleti tutacak yoluyla gönderildiği nesnenin türüne uygun seçilen aynı imzalı metodun çalışması ile işini görür. Nesne ile ilişkilendirilmeyen tutacaklara ileti gönderilemez. Bu durumda, yapılabilecek tek şey tutacağın null denetimidir. static metotlar. Aynı sınıfa ait nesnelerin paylaşılan ortak özellikleri. Nesne yaratılmadan kullanılabilecek özellikler. İşleç olarak tanımlanmamış ilkel türlere dair işlemler. Tevfik AKTUĞLU Java Programlama Dili
  • 15. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Nesnenin Yaşam Döngüsü Bazı Önemli İletiler Nesne Geri Döndürme Kullanılmaz hale gelen nesnelerin belleği otomatik çöp toplayıcı tarafından geri döndürülür. İlişkili tutacağın olmaması durumunda nesne kullanılmaz hale gelmiş demektir. Tevfik AKTUĞLU Java Programlama Dili
  • 16. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Nesnenin Yaşam Döngüsü Bazı Önemli İletiler Nesne Geri Döndürme Kullanılmaz hale gelen nesnelerin belleği otomatik çöp toplayıcı tarafından geri döndürülür. İlişkili tutacağın olmaması durumunda nesne kullanılmaz hale gelmiş demektir. Geri döndürme nesnenin kullanılmaz hale geldiği noktayla program sonu arasında herhangi bir an gerçekleşebilir ve ilk giren ilk çıkar mantığı ile yapılmaz. Tevfik AKTUĞLU Java Programlama Dili
  • 17. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Nesnenin Yaşam Döngüsü Bazı Önemli İletiler Nesne Geri Döndürme Kullanılmaz hale gelen nesnelerin belleği otomatik çöp toplayıcı tarafından geri döndürülür. İlişkili tutacağın olmaması durumunda nesne kullanılmaz hale gelmiş demektir. Geri döndürme nesnenin kullanılmaz hale geldiği noktayla program sonu arasında herhangi bir an gerçekleşebilir ve ilk giren ilk çıkar mantığı ile yapılmaz. Bellek dışı kaynaklar ve JSM tarafından ayrılmayan yığın bellek programcı tarafından döndürülmek zorundadır. Tevfik AKTUĞLU Java Programlama Dili
  • 18. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Nesnenin Yaşam Döngüsü Bazı Önemli İletiler İlkel Tür-Sınıf Dönüşümü java.util.Vector<Byte> bVek = new java.util.Vector<>(); byte b1 = 125, b2; ... bVek.add(b1); b2 = bVek.get(0); Tevfik AKTUĞLU Java Programlama Dili
  • 19. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Nesnenin Yaşam Döngüsü Bazı Önemli İletiler İlkel Tür-Sınıf Dönüşümü java.util.Vector<Byte> bVek = new java.util.Vector<>(); byte b1 = 125, b2; ... bVek.add(b1); b2 = bVek.get(0); Ön derleme ⇓ bVek.add(Byte.valueOf(b1)); b2 = bVek.get(0).byteValue(); Tevfik AKTUĞLU Java Programlama Dili
  • 20. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Nesnenin Yaşam Döngüsü Bazı Önemli İletiler Sarmalayıcı Sınıflar İlkel tür Sarmalayıcı sınıf SS→İlkel tür İlkel tür→SS boolean Boolean booleanValue byte Byte byteValue char Character charValue double Double doubleValue float Float floatValue valueOf int Integer intValue long Long longValue short Short shortValue void Void — — Tevfik AKTUĞLU Java Programlama Dili
  • 21. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Nesnenin Yaşam Döngüsü Bazı Önemli İletiler Eşitlik Denetimi (equals) Blog makalesi == ve != işini tutacağı denetleyerek yapar. Long l1 = new Long(5), l2 = new Long(5); System.out.println(l1 == l2); // ⇒ false Tevfik AKTUĞLU Java Programlama Dili
  • 22. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Nesnenin Yaşam Döngüsü Bazı Önemli İletiler Eşitlik Denetimi (equals) Blog makalesi == ve != işini tutacağı denetleyerek yapar. Tutacak yerine nesne eşitliğinin denetimi istenecek olursa, equals iletisinin kullanılması gerekir. System.out.println(l1.equals(l2)); // ⇒ true Tevfik AKTUĞLU Java Programlama Dili
  • 23. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Nesnenin Yaşam Döngüsü Bazı Önemli İletiler Eşitlik Denetimi (equals) Blog makalesi == ve != işini tutacağı denetleyerek yapar. Tutacak yerine nesne eşitliğinin denetimi istenecek olursa, equals iletisinin kullanılması gerekir. equals iletisinin varsayılan gerçekleştirimi == ile aynı şekilde çalışır. Bunun istenmemesi durumunda, ilişkin sınıfta istenen gerçekleştirime sahip aynı imzalı bir metot sağlanması gerekir. Tevfik AKTUĞLU Java Programlama Dili
  • 24. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Nesnenin Yaşam Döngüsü Bazı Önemli İletiler Eşitlik Denetimi (equals) Blog makalesi == ve != işini tutacağı denetleyerek yapar. Tutacak yerine nesne eşitliğinin denetimi istenecek olursa, equals iletisinin kullanılması gerekir. equals iletisinin varsayılan gerçekleştirimi == ile aynı şekilde çalışır. Bunun istenmemesi durumunda, ilişkin sınıfta istenen gerçekleştirime sahip aynı imzalı bir metot sağlanması gerekir. Kullanılacak fabrika metotları işi değiştirebilir. Long l1 = Long.valueOf(5), l2 = Long.valueOf(5); System.out.println(l1 == l2); // ⇒ true Long l3 = Long.valueOf(128), l4 = Long.valueOf(128); System.out.println(l3 == l4); // ⇒ false System.out.println(l3.equals(l4)); // ⇒ true Tevfik AKTUĞLU Java Programlama Dili
  • 25. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Nesnenin Yaşam Döngüsü Bazı Önemli İletiler Karşılaştırma (compareTo) Bazı nesneler karşılaştırılabilirken bazıları karşılaştırılamaz. Integer, String, vb. Disk dosyaları, karmaşık sayılar, matrisler, vb. Dolayısıyla, , =, ve = işleçleri bileşke türlerde kullanılamaz. Tevfik AKTUĞLU Java Programlama Dili
  • 26. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Nesnenin Yaşam Döngüsü Bazı Önemli İletiler Karşılaştırma (compareTo) Bazı nesneler karşılaştırılabilirken bazıları karşılaştırılamaz. Integer, String, vb. Disk dosyaları, karmaşık sayılar, matrisler, vb. Dolayısıyla, , =, ve = işleçleri bileşke türlerde kullanılamaz. Karşılaştırılabilir nesnelerin sınıfları Comparable arayüzünü gerçekleştirmek zorundadır. Comparable arayüzünün compareTo iletisi söz konusu sınıfın nesneleri arasındaki öncelik sonralık ilişkisini tayin eder. String ad1 = Tevfik, ad2 = Duygu; System.out.println(ad1.compareTo(ad2)); // ⇒ 16 Tevfik AKTUĞLU Java Programlama Dili
  • 27. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Nesnenin Yaşam Döngüsü Bazı Önemli İletiler Karşılaştırma (compareTo) Bazı nesneler karşılaştırılabilirken bazıları karşılaştırılamaz. Integer, String, vb. Disk dosyaları, karmaşık sayılar, matrisler, vb. Dolayısıyla, , =, ve = işleçleri bileşke türlerde kullanılamaz. Karşılaştırılabilir nesnelerin sınıfları Comparable arayüzünü gerçekleştirmek zorundadır. Comparable arayüzünün compareTo iletisi söz konusu sınıfın nesneleri arasındaki öncelik sonralık ilişkisini tayin eder. String ad1 = Tevfik, ad2 = Duygu; System.out.println(ad1.compareTo(ad2)); // ⇒ 16 Bir diğer seçenek java.util.Comparator arayüzünü gerçekleştirmektir. Tevfik AKTUĞLU Java Programlama Dili
  • 28. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Nesnenin Yaşam Döngüsü Bazı Önemli İletiler Hoş Yazım (toString) Nesnelerin ekran, disk dosyası gibi çıktı aygıtlarına insanlar tarafından okunabilir gösterimlerini yazmak için toString iletisi kullanılır. Tevfik AKTUĞLU Java Programlama Dili
  • 29. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Nesnenin Yaşam Döngüsü Bazı Önemli İletiler Hoş Yazım (toString) Nesnelerin ekran, disk dosyası gibi çıktı aygıtlarına insanlar tarafından okunabilir gösterimlerini yazmak için toString iletisi kullanılır. Bitiştirme işlecinin (+) işleneni olarak tutacak kullanılması durumunda, söz konusu nesne ilişkin sınıfın toString metodu kullanılarak String’e dönüştürülür. Integer iSayı = new Integer(1234); System.out.println(iSayı: + iSayı); ⇓ System.out.println(iSayı: + iSayı.toString()); Tevfik AKTUĞLU Java Programlama Dili
  • 30. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Nesnenin Yaşam Döngüsü Bazı Önemli İletiler Hoş Yazım (toString) Nesnelerin ekran, disk dosyası gibi çıktı aygıtlarına insanlar tarafından okunabilir gösterimlerini yazmak için toString iletisi kullanılır. Bitiştirme işlecinin (+) işleneni olarak tutacak kullanılması durumunda, söz konusu nesne ilişkin sınıfın toString metodu kullanılarak String’e dönüştürülür. Integer iSayı = new Integer(1234); System.out.println(iSayı: + iSayı); ⇓ System.out.println(iSayı: + iSayı.toString()); toString iletisinin varsayılan gerçekleştirimi, nesnenin tutacağına dair çözülmesi zor bir gösterim üretir. Bunun istenmemesi durumunda, istenen gerçekleştirime sahip aynı imzalı bir metot sağlanması gerekir. Tevfik AKTUĞLU Java Programlama Dili
  • 31. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Nesnenin Yaşam Döngüsü Bazı Önemli İletiler Kıyım Fonksiyonu (hashCode) Dizileri çekici kılan özellik: doğrudan erişim. Dizi indislerinin kısıtlayıcı özelliği: indis tamsayı olmak zorunda. int[] nüfus = new int[82]; // 0: toplam nüfus ... nüfus[35] ... // İzmir'in nüfusu ... nüfus[İzmir] ... // İzmir'in nüfusu Tevfik AKTUĞLU Java Programlama Dili
  • 32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Nesnenin Yaşam Döngüsü Bazı Önemli İletiler Kıyım Fonksiyonu (hashCode) Dizileri çekici kılan özellik: doğrudan erişim. Dizi indislerinin kısıtlayıcı özelliği: indis tamsayı olmak zorunda. int[] nüfus = new int[82]; // 0: toplam nüfus ... nüfus[35] ... // İzmir'in nüfusu ... nüfus[İzmir] ... // İzmir'in nüfusu Çözüm: Kent adı → Plaka no dönüşümünü gerçekleştiren bir hashCode metodu sağlamak Veri Kapları Çerçevesi’ndeki HashMap, HashSet ve Hashtable kaplarının kullanılması durumunda arka planda hashCode iletisi kullanılır. Tevfik AKTUĞLU Java Programlama Dili
  • 33. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Nesnenin Yaşam Döngüsü Bazı Önemli İletiler Kıyım Fonksiyonu (hashCode) Dizileri çekici kılan özellik: doğrudan erişim. Dizi indislerinin kısıtlayıcı özelliği: indis tamsayı olmak zorunda. int[] nüfus = new int[82]; // 0: toplam nüfus ... nüfus[35] ... // İzmir'in nüfusu ... nüfus[İzmir] ... // İzmir'in nüfusu Çözüm: Kent adı → Plaka no dönüşümünü gerçekleştiren bir hashCode metodu sağlamak Veri Kapları Çerçevesi’ndeki HashMap, HashSet ve Hashtable kaplarının kullanılması durumunda arka planda hashCode iletisi kullanılır. hashCode iletisinin varsayılan gerçekleştirimi, tutacağı kıyarak sonuç döndürür. Bu, aynı içeriğe sahip farklı nesnelerin farklı kıyım değerlerine sahip olması demektir. Tevfik AKTUĞLU Java Programlama Dili
  • 34. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma İletiler StringBuilder İçerik 1 Sınıflar ve Nesneler 2 Karakter Katarları 3 Diziler Tevfik AKTUĞLU Java Programlama Dili
  • 35. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma İletiler StringBuilder Tanımlama ve Yaratma Blog makalesi String ad = new String(Tevfik u0041ktuğlu); String isim = new String(ad); // kopyalama String yeniİsim = isim; // paylaşma boolean aynıMı = ad == isim; // aynıMı ← false aynıMı = isim == yeniİsim; // aynıMı ↞ true boolean eşitMi = ad.equals(isim); // eşitMi ← true “Tevfik Aktuğlu” “Tevfik Aktuğlu” ad isim yeniİsim Tevfik AKTUĞLU Java Programlama Dili
  • 36. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma İletiler StringBuilder String.valueOf String.valueOf(String) özel bir bellek bölgesi kullanarak aynı değerli karakter katarları için tek nesne yaratılmasını sağlar. String ad = String.valueOf(Tevfik Aktuğlu); String isim = String.valueOf(Tevfik + Aktuğlu); String yeniİsim = String.valueOf(isim); boolean aynıMı = ad == isim; // aynıMı ← true aynıMı = isim == yeniİsim; // aynıMı ↞ true Tevfik AKTUĞLU Java Programlama Dili
  • 37. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma İletiler StringBuilder String.valueOf String.valueOf(String) özel bir bellek bölgesi kullanarak aynı değerli karakter katarları için tek nesne yaratılmasını sağlar. String ad = String.valueOf(Tevfik Aktuğlu); String isim = String.valueOf(Tevfik + Aktuğlu); String yeniİsim = String.valueOf(isim); boolean aynıMı = ad == isim; // aynıMı ← true aynıMı = isim == yeniİsim; // aynıMı ↞ true Diğer String.valueOf metotları, yaratılan nesne sayısını en aza indirme gayreti içine girmezler. Tevfik AKTUĞLU Java Programlama Dili
  • 38. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma İletiler StringBuilder String.format int a = 37, b = 73; // sonuçStr ← a(37) + b(111) = 6en String sonuçStr = String.format(a(%d) + b(%o) = %x%n, a, b, a+b); Tevfik AKTUĞLU Java Programlama Dili
  • 39. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma İletiler StringBuilder String.format int a = 37, b = 73; // sonuçStr ← a(37) + b(111) = 6en String sonuçStr = String.format(a(%d) + b(%o) = %x%n, a, b, a+b); import java.util.GregorianCalendar; ... GregorianCalendar kuruluş = new GregorianCalendar(1923, 9, 29); System.out.format(Kuruluş: %1$td.%1$tm.%tY, kuruluş); // ⇒ Kuruluş: 29.10.1923 int buAn = System.currentTimeMillis(); System.out.format(Bu an: %1$td.%1$tm.%ty, buAn); // ⇒ Bu an: 10.08.15 Tevfik AKTUĞLU Java Programlama Dili
  • 40. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma İletiler StringBuilder String.format Dönüşüm Belirteçleri Argüman türü Belirteç Dönüşüm sonucu d Ondalık tamsayı Tamsayı o 8’li tamsayı x,X 16’lı tamsayı e, E Bilimsel gösterimli sayı f Ondalık sayı Kayan noktalı g, G Bilimsel gösterimli veya ondalık sayı a, A Bellek temsilindeki kesir ve mantisin 16’lı tabandaki bilimsel gösterimi Tevfik AKTUĞLU Java Programlama Dili
  • 41. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma İletiler StringBuilder String.format Dönüşüm Belirteçleri (2) Argüman türü Belirteç Dönüşüm sonucu Karakter c Unicode karakter b, B true veya false Genel h, H hashCode iletisinin sonucu s, S formatTo veya toString iletisinin sonucu Tarih-Zaman t, T Takip eden ek belirtece bağlı olarak tarih-zaman bileşenlerinden biri % % karakteri n Yeni satır karakteri Tevfik AKTUĞLU Java Programlama Dili
  • 42. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma İletiler StringBuilder String Sabitleri String satır = Katır kutur; String satır2 = Katır kutur; boolean aynıMı = satır == satır2; // aynıMı ← true Tevfik AKTUĞLU Java Programlama Dili
  • 43. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma İletiler StringBuilder String Sabitleri String satır = Katır kutur; String satır2 = Katır kutur; boolean aynıMı = satır == satır2; // aynıMı ← true String satır3 = Katır + + kutur; String katır = Katır, kutur = kutur; String satır4 = katır + + kutur; aynıMı = satır == satır3; // aynıMı ↞ false aynıMı = satır == satır4; // aynıMı ↞ false Tevfik AKTUĞLU Java Programlama Dili
  • 44. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma İletiler StringBuilder String Sabitleri String satır = Katır kutur; String satır2 = Katır kutur; boolean aynıMı = satır == satır2; // aynıMı ← true String satır3 = Katır + + kutur; String katır = Katır, kutur = kutur; String satır4 = katır + + kutur; aynıMı = satır == satır3; // aynıMı ↞ false aynıMı = satır == satır4; // aynıMı ↞ false String satır5 = (katır + + kutur).intern(); aynıMı = satır == satır5; // aynıMı ↞ true Tevfik AKTUĞLU Java Programlama Dili
  • 45. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma İletiler StringBuilder İletiler Bitiştirme Bitiştirme işleci: + İşlenenlerinin bitiştirilmiş hali olan yeni bir String nesnesini gösteren tutacağı döndürür. İşlenenlerden birinin String olmaması durumunda, söz konusu işlenen String’e çevrilir. Tevfik AKTUĞLU Java Programlama Dili
  • 46. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma İletiler StringBuilder İletiler Bitiştirme Bitiştirme işleci: + İşlenenlerinin bitiştirilmiş hali olan yeni bir String nesnesini gösteren tutacağı döndürür. İşlenenlerden birinin String olmaması durumunda, söz konusu işlenen String’e çevrilir. concat Argümanın boş katar olması halinde, ileti alıcı döndürülür. String ktr1 = asd, ktr2 = ; // aynıMı ← false boolean aynıMı = ktr1 == ktr1 + ktr2; aynıMı = ktr1 == ktr1.concat(ktr2); // aynıMı ↞ true Tevfik AKTUĞLU Java Programlama Dili
  • 47. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma İletiler StringBuilder İletiler Bitiştirme Bitiştirme işleci: + İşlenenlerinin bitiştirilmiş hali olan yeni bir String nesnesini gösteren tutacağı döndürür. İşlenenlerden birinin String olmaması durumunda, söz konusu işlenen String’e çevrilir. concat Argümanın boş katar olması halinde, ileti alıcı döndürülür. String ktr1 = asd, ktr2 = ; // aynıMı ← false boolean aynıMı = ktr1 == ktr1 + ktr2; aynıMı = ktr1 == ktr1.concat(ktr2); // aynıMı ↞ true Argümanın String olmaması durumu, derleyici tarafından hata olarak bildirilir. String ktr3 = ktr3.concat(3); // Derleme hatası! Tevfik AKTUĞLU Java Programlama Dili
  • 48. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma İletiler StringBuilder İletiler Öznitelik Sorgulama Boşluk denetimi: empty boolean boşMu = .isEmpty(); // boşMu ← false boşMu = .isEmpty(); // boşMu ↞ true Tevfik AKTUĞLU Java Programlama Dili
  • 49. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma İletiler StringBuilder İletiler Öznitelik Sorgulama Boşluk denetimi: empty Uzunluk sorgusu: length katardaki char sayısını döndürür. String kankalar = AlittVeli; System.out.print(kankalar); // ⇒ Ali Veli System.out.print(kankalar.length()); // ⇒ 9 Tevfik AKTUĞLU Java Programlama Dili
  • 50. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma İletiler StringBuilder İletiler Öznitelik Sorgulama Boşluk denetimi: empty Uzunluk sorgusu: length katardaki char sayısını döndürür. codePointCount katardaki Unicode karakteri sayısını döndürür. Tevfik AKTUĞLU Java Programlama Dili
  • 51. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma İletiler StringBuilder İletiler Öznitelik Sorgulama Boşluk denetimi: empty Uzunluk sorgusu: length katardaki char sayısını döndürür. codePointCount katardaki Unicode karakteri sayısını döndürür. Eleman sorgusu: charAt, codePointAt char A = N. AKTUĞLU.charAt(3); // A ← 'A' int sıra = N. AKTUĞLU.codePointAt(3); // sıra ← 65 Tevfik AKTUĞLU Java Programlama Dili
  • 52. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma İletiler StringBuilder Her char Karakter Değildir import static java.lang.System.out; public class UnicodeKarakterler { public static void main(String[] ksa) { String ktr = new String(new int[]{'G', 'Ğ', 0x1D11E}, 0, 3); int n = ktr.length(); out.print(codePointCount(): + ktr.codePointCount(0, n)); out.println( length(): + n); for (int i = 0; i n; i++) { out.print(charAt( + i + ): + ktr.charAt(i)); out.format( codePointAt(%d): %x%n, i, ktr.codePointAt(i)); } out.format(%x - %1$c%n, Character.toCodePoint(ktr.charAt(2), ktr.charAt(3))); } // void main(String[]) sonu } // UnicodeKarakterler sınıfının sonu Tevfik AKTUĞLU Java Programlama Dili
  • 53. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma İletiler StringBuilder Her char Karakter Değildir javac -encoding utf8 UnicodeKarakterler.java java UnicodeKarakterler codePointCount(): 3 length(): 4 charAt(0): G codePointAt(0): 47 charAt(1): Ğ codePointAt(1): 11e charAt(2): ? codePointAt(2): 1d11e charAt(3): ? codePointAt(3): dd1e 1d11e -  Tevfik AKTUĞLU Java Programlama Dili
  • 54. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma İletiler StringBuilder İletiler Eşitlik Denetimi equals iletisi veya == işlecinden hangisinin kullanılması gerektiğine karar verirken şunların hatırlanması yararlı olacaktır. new işlecinin her kullanımı farklı bir nesne yaratır. String sabitlerinin yeri new işlecinin kullandığından farklı, özel bir bellek havuzundan ayrılır ve her String sabitinin tek kopyası tutulur. İlkleme/atama deyiminin işini yeni String nesnesi yaratarak gören bir öğe içermesi durumunda, nesnenin yeri, kendisine eşit bir nesne bulunsa bile, özel bellek havuzundan ayrılmaz. Yaratılmakta olan nesne için yerin özel bellek havuzundan ayrılması intern iletisi ile garanti edilir. Tevfik AKTUĞLU Java Programlama Dili
  • 55. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma İletiler StringBuilder İletiler Eşitlik Denetimi equals iletisi veya == işlecinden hangisinin kullanılması gerektiğine karar verirken şunların hatırlanması yararlı olacaktır. new işlecinin her kullanımı farklı bir nesne yaratır. String sabitlerinin yeri new işlecinin kullandığından farklı, özel bir bellek havuzundan ayrılır ve her String sabitinin tek kopyası tutulur. İlkleme/atama deyiminin işini yeni String nesnesi yaratarak gören bir öğe içermesi durumunda, nesnenin yeri, kendisine eşit bir nesne bulunsa bile, özel bellek havuzundan ayrılmaz. Yaratılmakta olan nesne için yerin özel bellek havuzundan ayrılması intern iletisi ile garanti edilir. Katar içeriğindeki alfabetik karakterlerin büyük/küçük ayırt etmeksizin denetlenmesi için equalsIgnoreCase iletisi kullanılmalıdır. Tevfik AKTUĞLU Java Programlama Dili
  • 56. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma İletiler StringBuilder İletiler Karşılaştırma Büyük/küçük alfabetik karakter ayrımı // önceByk ← true boolean önceByk = A.compareTo(a) 0; // önceByk ↞ false önceByk = A.compareToIgnoreCase(a) 0; Tevfik AKTUĞLU Java Programlama Dili
  • 57. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma İletiler StringBuilder İletiler Karşılaştırma Büyük/küçük alfabetik karakter ayrımı Alfabetik karakterlerin sırası şaşırtabilir. // şÖncet ← false! boolean şÖncet = ş.compareTo(t) 0; Tevfik AKTUĞLU Java Programlama Dili
  • 58. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma İletiler StringBuilder İletiler Karşılaştırma Büyük/küçük alfabetik karakter ayrımı Alfabetik karakterlerin sırası şaşırtabilir. // şÖncet ← false! boolean şÖncet = ş.compareTo(t) 0; Çözüm, Y11E desteğinden yararlanmaktan geçer. import java.text.Collator; import java.util.Locale; ... Collator tr = Collator.getInstance(new Locale(tr)); // şÖncet ← true boolean şÖncet = tr.compare(ş, t) 0; Tevfik AKTUĞLU Java Programlama Dili
  • 59. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma İletiler StringBuilder İletiler Dilimleme ve Dönüştürme Dilimleme: substring String ad = new String(Tevfik Aktuğlu); // ilkAd ← Tevfik String ilkAd = ad.substring(0, 6); // Aşağıdaki satır String yeniAd = ad; ile eşdeğerdir String yeniAd = ad.substring(0); boolean aynıMı = yeniAd == ad; // aynıMı ← true Tevfik AKTUĞLU Java Programlama Dili
  • 60. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma İletiler StringBuilder İletiler Dilimleme ve Dönüştürme Dilimleme: substring String ad = new String(Tevfik Aktuğlu); // ilkAd ← Tevfik String ilkAd = ad.substring(0, 6); // Aşağıdaki satır String yeniAd = ad; ile eşdeğerdir String yeniAd = ad.substring(0); boolean aynıMı = yeniAd == ad; // aynıMı ← true Dönüştürme Alfabetik karakter dönüşümü: toLowerCase ve toUpperCase Uçlardaki boşluklardan arındırma: trim // uzunluk ← 2 int uzunluk = tO0 nr .trim().length(); Tevfik AKTUĞLU Java Programlama Dili
  • 61. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma İletiler StringBuilder İletiler Arama indexOf ve lastIndexOf String tkrlm = Bir berber bir berbere...; int ilkber = tkrlm.indexOf(ber); // ilkber ← 4 int ber2 = tkrlm.indexOf(ber, 5); // ber2 ← 7 int sonber = tkrlm.lastIndexOf(ber); // sonber ← 18 int ber3 = tkrlm.lastIndexOf(ber, 17); // ber3 ← 15 Tevfik AKTUĞLU Java Programlama Dili
  • 62. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma İletiler StringBuilder İletiler Arama indexOf ve lastIndexOf String tkrlm = Bir berber bir berbere...; int ilkber = tkrlm.indexOf(ber); // ilkber ← 4 int ber2 = tkrlm.indexOf(ber, 5); // ber2 ← 7 int sonber = tkrlm.lastIndexOf(ber); // sonber ← 18 int ber3 = tkrlm.lastIndexOf(ber, 17); // ber3 ← 15 Özel durumlar için startsWith ve endsWith kullanılabilir. startsWith(x) ≡ indexOf(x) ==0 startsWith(x, n) ≡ substring(n).indexOf(x) ==0 endsWith(x) ≡ lastIndexOf(x)+x.length() ==length() Tevfik AKTUĞLU Java Programlama Dili
  • 63. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma İletiler StringBuilder StringBuilder String nesnelerinin sabit olması, kimi zaman hem yerden hem de zamandan kaybetmemize neden olabilir. String fatih = 2 + .Mehmet; Üç nesne (”2”, ”.Mehmet” ve ”2.Mehmet”) yaratılırken sadece üçüncüsü kullanılmaktadır. Tevfik AKTUĞLU Java Programlama Dili
  • 64. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma İletiler StringBuilder StringBuilder String nesnelerinin sabit olması, kimi zaman hem yerden hem de zamandan kaybetmemize neden olabilir. String fatih = 2 + .Mehmet; Üç nesne (”2”, ”.Mehmet” ve ”2.Mehmet”) yaratılırken sadece üçüncüsü kullanılmaktadır. Bu gibi durumlarda, karakter katarı içeriğini yapıcı desenine uygun bir biçimde peyderpey oluşturma olanağını tanıyan StringBuilder sınıfının kullanılması daha doğru olacaktır. Tevfik AKTUĞLU Java Programlama Dili
  • 65. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma İletiler StringBuilder StringBuilder String nesnelerinin sabit olması, kimi zaman hem yerden hem de zamandan kaybetmemize neden olabilir. String fatih = 2 + .Mehmet; Üç nesne (”2”, ”.Mehmet” ve ”2.Mehmet”) yaratılırken sadece üçüncüsü kullanılmaktadır. Bu gibi durumlarda, karakter katarı içeriğini yapıcı desenine uygun bir biçimde peyderpey oluşturma olanağını tanıyan StringBuilder sınıfının kullanılması daha doğru olacaktır. StringBuilder ile aynı arayüze sahip StringBuffer sınıfı, söz konusu işlevselliği izlek güvenli bir biçimde sağlar. Tevfik AKTUĞLU Java Programlama Dili
  • 66. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma İletiler StringBuilder StringBuilder StringBuilder fatih = new StringBuilder(2); fatih.append(Mehmet).insert(1, .); System.out.print(Sığa: + fatih.capacity()); System.out.println( Uzunluk: + fatih.length()); // ⇒ Sığa: 17 Uzunluk: 8 fatih.replace(0, 1, III).deleteCharAt(0); System.out.println(fatih); // ⇒ II.Mehmet fatih.delete(1, 2).setCharAt(0, '2').trimToSize(); System.out.println(Sığa: + fatih.capacity()); // ⇒ Sığa: 8 String padişah = fatih.toString(); // ≡ String padişah = new String(fatih); Tevfik AKTUĞLU Java Programlama Dili
  • 67. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma İletiler StringBuilder StringBuilder StringBuilder fatih = new StringBuilder(2); fatih.append(Mehmet).insert(1, .); System.out.print(Sığa: + fatih.capacity()); System.out.println( Uzunluk: + fatih.length()); // ⇒ Sığa: 17 Uzunluk: 8 fatih.replace(0, 1, III).deleteCharAt(0); System.out.println(fatih); // ⇒ II.Mehmet fatih.delete(1, 2).setCharAt(0, '2').trimToSize(); System.out.println(Sığa: + fatih.capacity()); // ⇒ Sığa: 8 String padişah = fatih.toString(); // ≡ String padişah = new String(fatih); Karakter katarı kümeleme aracı olarak düzenli deyimler: Blog makalesi Tevfik AKTUĞLU Java Programlama Dili
  • 68. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma Çok Boyutlu Diziler java.util.Arrays İçerik 1 Sınıflar ve Nesneler 2 Karakter Katarları 3 Diziler Tevfik AKTUĞLU Java Programlama Dili
  • 69. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma Çok Boyutlu Diziler java.util.Arrays Tanımlama ve Yaratma Blog makalesi int[] notlar = new int[50]; int[] notlar2; ... int sığa = grdKnlı.nextInt(); notlar2 = new int[sığa]; notlar 0 1 ... notlar.length-1 Tevfik AKTUĞLU Java Programlama Dili
  • 70. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma Çok Boyutlu Diziler java.util.Arrays Tutacak ve Dizi Nesnesi Tutacak ilişkili olduğu dizi nesnesini temsil eder. Bu nesne, diğer bileşenlerin yanısıra elemanların saklanacağı kabı da bulundurur. Tevfik AKTUĞLU Java Programlama Dili
  • 71. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma Çok Boyutlu Diziler java.util.Arrays Tutacak ve Dizi Nesnesi Tutacak ilişkili olduğu dizi nesnesini temsil eder. Bu nesne, diğer bileşenlerin yanısıra elemanların saklanacağı kabı da bulundurur. Diziler statik kaplardır; tutacak.length ile öğrenilebilecek dizi nesnesinin sığası, çalışma anında belirlenebilmesine karşılık, değiştirilemez. java.util.Vector İndis değeri, [0..tutacak.length) aralığından olmalıdır. Sınır dışı bir değer ArrayIndexOutOfBoundsException ayrıksı durum nesnesi ile bildirilir. Tevfik AKTUĞLU Java Programlama Dili
  • 72. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma Çok Boyutlu Diziler java.util.Arrays Tutacak ve Dizi Nesnesi Tutacak ilişkili olduğu dizi nesnesini temsil eder. Bu nesne, diğer bileşenlerin yanısıra elemanların saklanacağı kabı da bulundurur. Diziler statik kaplardır; tutacak.length ile öğrenilebilecek dizi nesnesinin sığası, çalışma anında belirlenebilmesine karşılık, değiştirilemez. java.util.Vector İndis değeri, [0..tutacak.length) aralığından olmalıdır. Sınır dışı bir değer ArrayIndexOutOfBoundsException ayrıksı durum nesnesi ile bildirilir. Dizi içeriği eleman türünün varsayılan ilk değeri ile ilklenir. Tevfik AKTUĞLU Java Programlama Dili
  • 73. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma Çok Boyutlu Diziler java.util.Arrays İlkleyerek Dizi Yaratma // Aşağıdaki tanım şu dört komuta denk // String[] kankalar = new String[3]; // kankalar[0] = Ali; // kankalar[1] = Veli; // kankalar[2] = Selami; String[] kankalar = {Ali, Veli, Selami}; kankalar “Ali” “Veli” “Selami” Tevfik AKTUĞLU Java Programlama Dili
  • 74. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma Çok Boyutlu Diziler java.util.Arrays Tür Uyumluluk short[] shortDizi = new short[10]; short[] shortDizi2 = new short[20]; ... shortDizi2 = shortDizi; shortDizi2[5] = 125; // shortDizi[5]'i de değiştirir! Tevfik AKTUĞLU Java Programlama Dili
  • 75. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma Çok Boyutlu Diziler java.util.Arrays Tür Uyumluluk short[] shortDizi = new short[10]; short[] shortDizi2 = new short[20]; ... shortDizi2 = shortDizi; shortDizi2[5] = 125; // shortDizi[5]'i de değiştirir! Tutacak ve dizi nesnesi, Java programlama dili tarafından tanımlanmış özel bir sınıfa aittir. Örneğin, shortDizi ve ilişkin dizi nesnesi short[] sınıfına aittir. Bu sınıf, sığasına bakmaksızın tüm short elemanlı dizilerin ait olduğu sınıfı temsil eder. Tevfik AKTUĞLU Java Programlama Dili
  • 76. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma Çok Boyutlu Diziler java.util.Arrays Tür Uyumluluk short[] shortDizi = new short[10]; short[] shortDizi2 = new short[20]; ... shortDizi2 = shortDizi; shortDizi2[5] = 125; // shortDizi[5]'i de değiştirir! Tutacak ve dizi nesnesi, Java programlama dili tarafından tanımlanmış özel bir sınıfa aittir. Örneğin, shortDizi ve ilişkin dizi nesnesi short[] sınıfına aittir. Bu sınıf, sığasına bakmaksızın tüm short elemanlı dizilerin ait olduğu sınıfı temsil eder. equals, toString gibi tüm nesnelere gönderilebilecek iletileri barındıran Object sınıfındakilere ek olarak, dizi nesnelerine [] işleci yoluyla iki ileti gönderilebilir: eleman erişim ve eleman güncelleme. Tevfik AKTUĞLU Java Programlama Dili
  • 77. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma Çok Boyutlu Diziler java.util.Arrays Tür Uyumluluk byte b = ...; int i = b; // Tamam ... byte[] byteDizi = new byte[10]; int[] intDizi = byteDizi; // Derleme hatası! İlkel türler arasındaki kapsama ilişkisi, söz konusu türlerin değerlerini içeren diziler için geçerli değildir. Tevfik AKTUĞLU Java Programlama Dili
  • 78. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma Çok Boyutlu Diziler java.util.Arrays Çok Boyutlu Diziler char[][] bulmaca = new char[2][3]; bulmaca [0] [1] [0][0] [0][1] [0][2] [1][0] [1][1] [1][2] Tevfik AKTUĞLU Java Programlama Dili
  • 79. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma Çok Boyutlu Diziler java.util.Arrays Çok Boyutlu Diziler char[][] adListesi = new char[3][]; adListesi[0] = new char[3]; adListesi[1] = new char[4]; adListesi[2] = new char[]{'S', 'e', 'l', 'a', 'm', 'i'}; Tevfik AKTUĞLU Java Programlama Dili
  • 80. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma Çok Boyutlu Diziler java.util.Arrays Kopyalama Blog makalesi int[] notlar= {60, 70, 80}; int[] yeniNotlar; ... yeniNotlar = notlar; yeniNotlar[1] = 75; // notlar[1], yeniNotlar[1] ↞ 75 notlar yeniNotlar 60 70 → 75 80 Tevfik AKTUĞLU Java Programlama Dili
  • 81. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma Çok Boyutlu Diziler java.util.Arrays Kopyalama Blog makalesi int[] notlar= {60, 70, 80}; int[] yeniNotlar; ... yeniNotlar = notlar; yeniNotlar[1] = 75; // notlar[1], yeniNotlar[1] ↞ 75 import java.util.Arrays; ... yeniNotlar = Arrays.copyOf(notlar, notlar.length); yeniNotlar[1] = 75; // yeniNotlar[1] ↞ 75 Tevfik AKTUĞLU Java Programlama Dili
  • 82. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma Çok Boyutlu Diziler java.util.Arrays Kopyalama Blog makalesi int[] notlar= {60, 70, 80}; int[] yeniNotlar; ... yeniNotlar = notlar; yeniNotlar[1] = 75; // notlar[1], yeniNotlar[1] ↞ 75 import java.util.Arrays; ... yeniNotlar = Arrays.copyOf(notlar, notlar.length); yeniNotlar[1] = 75; // yeniNotlar[1] ↞ 75 Dilim kopyalama: Arrays.copyOfRange(dz, ilk, son) [ilk..son) aralığındaki dilimi kopyalar. Tevfik AKTUĞLU Java Programlama Dili
  • 83. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma Çok Boyutlu Diziler java.util.Arrays Eşitlik Denetimi yeniNotlar = Arrays.copyOf(notlar, notlar.length); System.out.format(==: %b, yeniNotlar == notlar); // ⇒ ==: false System.out.format(eq: %B, yeniNotlar.equals(notlar)); // ⇒ eq: FALSE System.out.format(Arrays.eq: %b, Arrays.equals(yeniNotlar,notlar)); // ⇒ Arrays.eq: true Tevfik AKTUĞLU Java Programlama Dili
  • 84. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma Çok Boyutlu Diziler java.util.Arrays Eşitlik Denetimi yeniNotlar = Arrays.copyOf(notlar, notlar.length); System.out.format(==: %b, yeniNotlar == notlar); // ⇒ ==: false System.out.format(eq: %B, yeniNotlar.equals(notlar)); // ⇒ eq: FALSE System.out.format(Arrays.eq: %b, Arrays.equals(yeniNotlar,notlar)); // ⇒ Arrays.eq: true char[][] dz = new char[2][3], dz2 = new char[2][3]; dz2[0][0] = dz[0][0] = 'a'; dz2[1][0] = dz[1][0] = 'd'; dz2[0][1] = dz[0][1] = 'b'; dz2[1][1] = dz[1][1] = 'e'; dz2[0][2] = dz[0][2] = 'c'; dz2[1][2] = dz[1][2] = 'f'; System.out.print(Arrays.equals(dz, dz2)); // ⇒ false System.out.print(Arrays.deepEquals(dz, dz2)); // ⇒ true Tevfik AKTUĞLU Java Programlama Dili
  • 85. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma Çok Boyutlu Diziler java.util.Arrays Toptan Güncelleme String[] vatandaşlıkBilgisi = new String[50]; Arrays.fill(vatandaşlıkBilgisi, TC); Dilim güncelleme: Arrays.fill(dz, ilk, son, yeniDeğer) dz’nin [ilk..son) aralığındaki dilimini yeniDeğer ile günceller. Tevfik AKTUĞLU Java Programlama Dili
  • 86. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma Çok Boyutlu Diziler java.util.Arrays Hoş Yazım String[] çete = {Ali, Veli, Selami}; System.out.print(toString: + çete); // ⇒ toString: [Ljava.lang.String;@1a46e30 System.out.print(Arrays.toString: + Arrays.toString(çete)); // ⇒ Arrays.toString: [Ali, Veli, Selami] Tevfik AKTUĞLU Java Programlama Dili
  • 87. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma Çok Boyutlu Diziler java.util.Arrays Hoş Yazım String[] çete = {Ali, Veli, Selami}; System.out.print(toString: + çete); // ⇒ toString: [Ljava.lang.String;@1a46e30 System.out.print(Arrays.toString: + Arrays.toString(çete)); // ⇒ Arrays.toString: [Ali, Veli, Selami] Derin hoş yazım: Arrays.deepToString Tevfik AKTUĞLU Java Programlama Dili
  • 88. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma Çok Boyutlu Diziler java.util.Arrays Sıralama String ali = new String(Ali); String ali2 = new String(Ali); String[] ahbapÇavuşlar = {Veli, ali, Selami, ali2}; System.out.println(Arrays.toString(ahbapÇavuşlar)); // ⇒ [Veli, Ali, Selami, Ali] Arrays.sort(ahbapÇavuşlar); System.out.println(Arrays.toString(ahbapÇavuşlar)); // ⇒ [Ali, Ali, Selami, Veli] Tevfik AKTUĞLU Java Programlama Dili
  • 89. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma Çok Boyutlu Diziler java.util.Arrays Sıralama String ali = new String(Ali); String ali2 = new String(Ali); String[] ahbapÇavuşlar = {Veli, ali, Selami, ali2}; System.out.println(Arrays.toString(ahbapÇavuşlar)); // ⇒ [Veli, Ali, Selami, Ali] Arrays.sort(ahbapÇavuşlar); System.out.println(Arrays.toString(ahbapÇavuşlar)); // ⇒ [Ali, Ali, Selami, Veli] Eleman türünün karşılaştırılabilir olması gerekir. Sıralama yerinde yapılır. Yani, argüman olarak geçirilen dizi değiştirilerek iş görülür; eşit değerli konumların göreceli yeri değişmez. Dilim sıralama: Arrays.sort(dz, ilk, son) [ilk..son) indis aralığındaki dilimi sıralar. Tevfik AKTUĞLU Java Programlama Dili
  • 90. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma Çok Boyutlu Diziler java.util.Arrays İkili Arama System.out.print(Arrays.toString(ahbapÇavuşlar)); // → [Ali, Ali, Selami, Veli] // konum ← 1 int konum = Arrays.binarySearch(ahbapÇavuşlar, Ali); // konum ↞ 3 konum = Arrays.binarySearch(ahbapÇavuşlar, Veli); // konum ↞ -3 konum = Arrays.binarySearch(ahbapÇavuşlar, Aliye); // konum ↞ -3 konum = Arrays.binarySearch(ahbapÇavuşlar, 2, 4, Ali); Tevfik AKTUĞLU Java Programlama Dili
  • 91. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sınıflar ve Nesneler Karakter Katarları Diziler Tanımlama ve Yaratma Çok Boyutlu Diziler java.util.Arrays İkili Arama System.out.print(Arrays.toString(ahbapÇavuşlar)); // → [Ali, Ali, Selami, Veli] // konum ← 1 int konum = Arrays.binarySearch(ahbapÇavuşlar, Ali); // konum ↞ 3 konum = Arrays.binarySearch(ahbapÇavuşlar, Veli); // konum ↞ -3 konum = Arrays.binarySearch(ahbapÇavuşlar, Aliye); // konum ↞ -3 konum = Arrays.binarySearch(ahbapÇavuşlar, 2, 4, Ali); Eleman türünün karşılaştırılabilir olması gerekir. Döndürülen eksi değer aramanın başarısız olduğunu ve anahtarın sıralı diziye eklenmesi durumunda gireceği konumu verir. Tevfik AKTUĞLU Java Programlama Dili