Sıfırdan Java programlama dersleri serisinde bu dersimizde “ Java Programlama Dersleri, Tip Dönüşümleri ” konusuna değineceğiz. Java’da değişken nedir, veri türleri(tipleri) nelerdir? konuları hakkında fikri olmayanlar “Java’da Değişkenler, Veri Tipleri” makalemizi okuyabilirler.

Tip Dönüşümleri (Type Conversion)

 

Java programlarında değişik veri tipinde değişkenlerin kullanıldığından bahsetmiştik. Değişkenleri kullanarak değişik uygulamalar da yaptık.

Java programlama dili, programlarda kullanılan veri türleri arasındaki atamalarda yani tip dönüşümlerinde tip uygunluğuna dikkat eder. Yani int türündeki bir değişkene int değer vermelisiniz.

Zaman zaman programlarda farklı veri tipindeki verileri birbirine atamanız gerekebilir. Programınızın düzgün çalışabilmesi,  veri kaybı gibi durumlarla karşılaşmamak için tip dönüşümleri konusunu çok iyi bilmelisiniz. İlk olarak veri tiplerinin hafızada ne kadar yer kapladığını bilmelisiniz.

Java Veri Tipleri Boyutları Max Değerleri

Java Tip Dönüşümleri şemamıza baktığınızda ok yönünde yapılan dönüşümlerde veri kaybının olmadığını göreceksiniz. Veri kaybı dediğimiz de nedir diyebilirsiniz. Veri kaybı, büyük veri tipinin küçük veri tipine atanması durumunda karşılaşılan veri taşması olayıdır.

Veri taşmasını (veri kaybını),  küçük bardaktaki suyun büyük bardak tarafından alınabilmesi, tam tersi durumda ise büyük bardaktaki suyu küçük bardağa aktardığımızda ortaya çıkan taşma olarak düşünebilirsiniz.

Dolayısıyla küçük türler büyük türlere atanabilirler ancak büyük türler küçük türlere atanırken veri kaybı olabilir.

Java tip dönüşümleri resmine bakarak konuşalım. Türler arasındaki okların hep küçük türlerden büyük türlere doğru olduğunu fark etmişsinizdir. byte  (1byte) iken short ve char (2byte) tır. int ve float 4 byte iken, double ve long 8 byte’tır.

int ve float karşılaştırmasında ise float’ı daha büyük tür olarak kabul etmelisiniz. Çünkü 4 sayısı ile 4.8 sayısı arasında da fark vardır. 4.8 sayısı 4 sayısına dönüşürken 0.8 lik bir veri kaybı yaşanır.

Bu sebeple aynı boyuttaki sayısal türlerden noktalı türde olanları daha büyük kabul etmelisiniz. Bu durumda float tipi int den, double tipi de long dan daha büyük kabul edilebilir.

Java Programlama Dersleri Tip Dönüşümleri

 

Küçük Türlerin Büyük Türlere Dönüşümü – Uygulama

 

Küçük türler, büyük türlere atanırken veri kaybı yaşanmadığını söylemiştik.. Böyle bir atamada program bize uyarı vermeyecektir. Uygulamasını görelim. Eclipse IDE kullanarak TipDonusumleri adında bir sınıf oluşturdum. İçerisine de şu kodları yazdım :

Programın ekran görüntüsü aşağıdaki gibidir :

Java Tip Dönüşümleri, Küçük Tipin Büyük Tipe Dönüşümü

Programımızda byte tipinde adı b olan bir değişken tanımladık. İçerisine de 67 değeri atadık.  Sonra i adında int tipinde bir değişken tanımladık ve içerisine 0 değerini atadık. Sonrasında byte olan b değerini int olan i değerine atama operatörünü kullanarak atadık. Ekrana yazdırdık.

Programı çalıştırdığımızda derleyiciden herhangi bir hata almadık. Ekrana aşağıdaki değerleri yazdırdı :

Görüldüğü gibi küçük veri tiplerinin büyük veri tiplerine atanmasında herhangi bir sıkıntı olmamaktadır.

 

Büyük- Küçük Tür Dönüşümü – Uygulama

 

Java, büyük türlerin küçük türlere dönüşümüne direk izin vermez. Program derleme esnasında hata verir. Bunun için bilinçli tür dönüşümü işlemi yapmamız gerekir.

Uygulama üzerinden gidelim. Kodları veriyorum :

Programımızın ekran görüntüsü de aşağıdaki gibidir :

Java Programlama Dersleri Tip Dönüşümleri Büyük Küçük Tür Dönüşümü

Programımızda byte tipinde b, int tipinde i, float tipinde f ve double tipinde d değişkeni olmak üzere 4 ayrı değişken tanımladık.

int tipinde olan i değişkenin değeri 245 olarak verildi. Bu değeri byte tipindeki b tipine atadık. Derleyici hata vermesin diye hangi türe dönüştürmek istediğimizi belirttik. (byte) şeklinde.

Ancak burada şöyle bir durumla karşılaşılacak. byte,  -128 ile 127 arasında değer alabilir. b değişkenine 245 değerini atadığımızda maksimum 127 değerine geldikten sonra -128 den ilerleyerek devam edecektir. (-128, -127 … şeklinde)  245 -127= 118 kadar değer de negatif değerlerden ilerleyecektir.

Görüldüğü gibi veri taşması olayı yaşandı. b değişkenine 245 değeri atamamıza rağmen bu değerin dışında bir değer alacaktır.

float değişken olan f tipini int değişken olan i değerine atadık. int değerine dönüştürmek istediğimizi başına (int) ifadesini koyarak belirttik. 145.4 değeri int değerine atandığında 145 olarak geçecektir. Veri kaybı olacaktır.

Değişkenler dersimizde double tipinin noktadan sonraki hassasiyetinin float dan daha fazla olduğunu ifade etmiştik.

double tipindeki d değişkenimiz noktadan sonra 8 basamaklıdır. Biz bu değeri float tipindeki f değişkenine atadık. Bakalım  sonuç nasıl değişecek.

Değerlerimizi ekrana yazdırdık, sonuçlarımız aşağıdaki gibidir :

Görüldüğü gibi byte değişkeninde meydana gelen taşma -11 ile sona erdi. int tipi de 145.4 değerini 145 olarak muhafaza etti. Son olarak iki noktalı ifadenin birbirine atanması durumunu gösterdiğimiz işlemde virgülden sonra float sadece 4 değer saklayabildi.

Java Tip Dönüşümleri konusunu burada bitirmiş olduk. Uygulama, anlatım veya konuyla alakalı olarak sormak istediklerinizi aşağıdaki yorum panelini kullanarak bizlerle paylaşabilirsiniz.

 

Pin It on Pinterest

Daha fazla Java
Java programlama dersleri String Sınıfı string veri tipi metodları
Java Programlama Dersleri – String Sınıfı

Sıfırdan Java programlama dersleri serisinde önceki dersimizde " Java Programlama Dersleri - Değişkenler (Veri Tipleri)" konusuna değinmiştik. Ancak bu konu...

Kapat