Welcome to My Blog 👋

Java, Spring Framework, Microservices, Docker, Kubernetes, AWS and Others 🚀
Follow Me

Classpath Java kodu derlenirken kaynak kodun bağlantılı olduğu sınıfların arandığı yoldur. Yani adından da anlaşılacağı gibi Java'da yazılan sınıfların yoludur. Eğer classpath yanlış verilirse derleme esnasında bağlantılı sınıflar bulunamayacağı için derleme başarısız olur.


Oracle Java dilini satın aldıktan sonra geliştiricilerin bilgilerini belgelemek için sertifikalar vermeye başlamıştır. Çeşitli belgeler ile Java dilindeki uzmanlığınızın alanını ve seviyesini belirtebilirsiniz. Ülkemizde daha çok yaygın olmamakla birlikte yurt dışı için bu sertifikalar önemlidir. Sertifikalar hakkında daha detaylı bilgi almak için benimde takip ettiğim bu bloglardaki ilgili yazıları okuyabilirsiniz.



Java'da bir nesnenin hangi sınıfa ait olduğunu çalışma anında tespit etmek için instanceof operatörünü kullanabiliriz. Bu operatör iki değer alır. Sol tarafına bir nesne ve sağ tarafına ise bir sınıf değeri alır. Eğer belirtilen nesne belirtilen sınıfa ait ise true değil ise false değerini döndürür. Örnek;

Canli canli = new Canli();
System.out.println(canli instanceof Canli);
System.out.println(canli instanceof Araba);

Ekran Çıktısı:

true
false


Java'da oluşturduğumuz nesneleri kopyalayarak yeni nesneler oluşturabiliriz. Kopyalayarak oluşturduğumuz yeni nesne tamamen yeni bir nesne de olabilir, kopyalanan nesne ile aynı nesne de olabilir. Bu yüzden Java'da iki tür nesne kopyalama yöntemi vardır.

  • Sığ Kopyalama (Shallow Copy)
  • Derin Kopyalama (Deep Copy)

Sığ kopyalamada oluşturulan iki nesnede aynı bellek bölgesini gösterir. Örneğin;

Canli canli1 = new Canli();
Canli canli2 = canli1;

Yukarıdaki ilk satırda canli1 isminde bir nesne oluşturuluyor ve bu nesne için new anahtar sözcüğü ile bellekte bir yer ayrılıyor. canli1 adındaki bu nesne bellekte onun için ayrılar yeri gösteriyor. Daha sonra canli2 adında oluşturduğumuz nesneye de canli1 adındaki nesnenin gösterdiği bellek adresini atıyoruz. Bu şekilde iki nesnede aynı bellek bölgesini gösteriyor. Bu tür nesne kopyalamasına sığ kopyalama(shallow copy) denir.

Derin kopyalamada ise yeni nesne için bellekte yeni bir alan oluşturulur ve kopyalanacak nesnenin tüm özelliklere teker teker yeni nesneye aktarılır.

Canli canli1 = new Canli();
canli1.isim = "kedi";
Canli canli2 = new Canli();
canli2.isim = canli1.isim;

Yukarıda görüldüğü gibi iki nesne içinde new anahtar sözcüğü ile bellekte iki ayrı yer ayrılıyor ve sadece nesnenin özellikleri kopyalanıyor. Bunun gibi bir kopyalama işlemine derin kopyalama(deep copy) denir.

Java dilinde veri tipleri üçe ayrılır;
  • İlkel (Primitive) Veri Tipleri
  • Referans Veri Tipleri
  • Null Veri Tipi
İlkel veri tipleri kendi içinde alt gruplara ayrılır. Bunlar;
  • Sayısal Veri Tipleri
  • Mantıksal Veri Tipleri
Referans veri tipleri kendi içinde alt gruplara ayrılır. Bunlar;
  • Class
  • Interface
  • Array
Nesne yönelimli programlamada tüm veri tipleri bir sınıftır. Ancak veri tipleri çok sık kullanıldığından dolayı her seferinde bir nesne oluşturulmak istenmemesinden dolayı Java ilkel veri tiplerini bir nesne oluşturmadan kullanmamıza olanak sağlar. Referans tipler ise direk bir nesnesini oluşturduğumuz tiplerdir. Bu nesnelerin içerisine değer atarız ve o sınıfın metotlarını kullanabiliriz.

İlkel veri tipleri sabit uzunluklu veri tipleridir. Yani içerisine girilebilecek veriler sınırlıdır. Örneğin byte veri tipi -128 ile +127 arasında sayılar alır. Bu sayılardan farklı bir sayı içerisine girilemez. Bu veri tiplerinin bellekte kapladıkları alan sabittir. Örneğin byte veri tipi içinde 0 da tutsa 127 de tutsa bellekte kapladığı yer hep 1 byte olacaktır.

Referans tipler ise değişken uzunluklu veri tipleridir. Örneğin String veri tipinin içerisine istediğimiz kadar karakter girebiliriz ve bu karakterlere göre bellekte kapladığı alan farklı olacaktır.

İlkel veri tiplerinin içerisinde değerler tutulur. Yani örnek olarak int veri tipi içerisine 8 sayısını girdiğimizde bu veri tipinin içerisinde 8 değeri olur. Daha sonra bu değişkeni bir metoda gönderdiğimizde değişkenin kendisi değil içerisindeki değer gönderilir. Referans tiplerde ise değerler tutulmaz. Değişkenlerin içerisinde değerin bellekte bulunduğu adres tutulur. Böylelikle bu veri tiplerinin metotlara parametre olarak geçtiğimizde değer değil değerin adresi metoda gönderilir. Bu şekilde değişken üzerinde işlem yapılır.

Bir istisna olarak String veri tipi bir referans tip olmasına rağmen bir nesne yaratılmadan kullanılabilir. String sınıfı çok sık kullanılan bir sınıf olduğu için Java'da böyle bir kolaylık uygulanmıştır.

İlkel veri tipleri üzerinde operatörler ile işlem yapabiliriz. Referans tipler üzerinde işlem yapabilmek için ilgili sınıfın metotlarını kullanmak zorundayız.

İstersek bir sınıf yazarak kendi referans veri tipimizi oluşturabiliriz.

İlkel Veri Tipleri
  • byte
  • short
  • int
  • long
  • float
  • double
  • boolean
  • char
Referans Veri Tipleri
  • Byte
  • Short
  • Integer
  • Long
  • Float
  • Double
  • Boolean
  • Character
  • String
  • ...