Jun 22
Java 5 ile gelen özelliklerden biri de Autoboxing/Unboxing’dir.
Java’da iki tip vardır. Birincisi int, long, double, boolean … gibi ilkel tipler, ikincisi ise objeler için kullanılan referans tiplerdir.
Java’da Collection sınıfları parametre olarak obje almaktadır. Bu nedenle Collection içerisine bir sayı koymak istediğinizde Java 1.4 ve öncesinde ayrı bir sınıf oluşturup o sınıf içerisinde sayınızı tanımlamanız gerekecekti. Fakat Java5 ile gelen Autoboxing özelliği ile bu ilkel tip otomatik olarak referans tipine çevrilir. Örnek vermek gerekirse;
ArrayList list = new ArrayList();
int i = 10;
list.add(i); // Autoboxing
// Java 1.4 ve öncesinde aşağıdaki satırı yazmalısınız
list.add(new Integer(i));
Eğer bu kodu Java 1.4 ve önceki versiyonda çalıştırırsanız hata alırsınız.
Unboxing ise bu işlemin tam tersidir. Yani referans tipinden ilkel tipe çevrilme işlemidir.
int sayı = new Integer(10); // Unboxing
yazan Erol KOCAMAN
Jun 15
Java’da throw ve throws tanımları karıştırılan kavramlardan biridir. Aslında yazılışları aynı gibi de görünse anlamları çok farklıdır.
throw: Bu tanımlama kod içerisinde istediğimiz Exception’ı atmamızı sağlar. Bu Exception hiyerarşik olarak programın başka bölümleri tarafından tutulur.
throws: Bu tanımlama ise methodun içerisindeki işlemler sırasında bu Exception’ları atabileceği ve bu nedenden dolayı methodun try/catch blokları arasında çağırılması gerektiğini söyler.
Örnek vermek gerekirse;
public int myException(int num) throws NumberFormatException {
if(num < 0) {
throw new NumberFormatException();
}
return num;
}
Yukarıdaki örnekte myException methodu NumberFormatException atabilir çünkü mehod tanımlamasında “throws NumberFormatException” denilmiş. Eğer parametre olarak negatif bir sayı verilirse “throw new NumberFormatException();” komutuyla Exception atıyoruz. Bu method pozitif bir sayı girilirse parametre olarak girdiğimiz sayıyı dönecektir.
try {
myException(-1);
} catch(NumberFormatException exc) {
System.out.println("Negatif sayı girdiniz...");
}
Yukarıdaki kod atılan Exception’ı try/catch bloğu içerisinde yakalayıp ekrana “Negatif sayı girdiniz…” yazısını basacaktır.
yazan Erol KOCAMAN
Jun 14
ArrayList ve Vector sınıfları hemen hemen aynı işleri yapmakla beraber aralarında farklılıklar bulunmaktadır.
- ArrayList ve Vector içeriklerini Array içerisinde tutarlar. Fakat eklenen içerikler arttıkça bu Array’in boyutunu arttırmak gerekli. Bu artış Vector’de 2N şeklinde yani her seferinde iki katı boyutunda Array oluşturur. Fakat ArrayList’de bu işlem %50 boyutunda arttırılır.
- ArrayList’i oluştururken başlangıç boyutunu belirtebilirsiniz. Fakat Vector’de hem başlangıç boyutunu hem de artış miktarını belirtebilirsiniz.
- Vector’ler synchronized iken ArrayList synchronized değildir. Aynı ArrayList üzerinde aynı anda birden fazla işlem yapılırsa data kaybı yaşanabilir.
yazan Erol KOCAMAN
Son Yorumlar