Bu yazımda Java tip dönüşümleri (Java type casting) konusundan bahsedeceğim. Ayrıca tip dönüşüm metodlarını örnekler üzerinde anlatacağım. Yazının içeriği aşağıdadır.
- Tip dönüşümü nedir ve neden kullanıyoruz?
- Otomatik tip dönüşümü (Implicit Casting) nedir?
- Açık tip dönüşümü (Explicit Casting) nedir?
- String ve sayısal tipler arasında dönüşüm.
Tip Dönüşümü Nedir Ve Neden Kullanıyoruz?
Tip dönüşümü, bir veri tipinin başka bir veri tipine dönüştürülmesini sağlıyor. Java tip dönüşümleri konusunu önemli kılan nedenleri şu şekilde sıralayabiliriz:
Veri Türü Uyumluluğu: Java’da, farklı veri tipleri belirli aralıklarda değerler tutabilir. Tip dönüşümü, uyumsuz veri tipleri arasında geçiş yapmanızı sağlar. Örneğin, bir String’i int’e dönüştürerek sayısal işlemler yapabilirsiniz.
İşlem Yapma ve Karşılaştırma: Java’da, aynı veri tipine sahip olmayan değişkenlerle aritmetik işlemler veya karşılaştırmalar yapamazsınız. Tip dönüşümü kullanarak uygun veri türlerine dönüştürme yaparak bu tür işlemleri gerçekleştirebilirsiniz.
Metodlar ve Fonksiyonlar: Java’da metodlar ve fonksiyonlar belirli veri tiplerini parametre olarak bekleyebilir. Eğer beklenen veri tipiyle uyumsuz bir veriye sahipseniz, tip dönüşümü yaparak uygun veri tipini sağlayabilirsiniz.
Veri Saklama ve Kullanma: Farklı veri tipleri farklı miktarda bellek kullanır. Tip dönüşümü, veri tipini değiştirerek daha az bellek kullanımı sağlayabilir ve veri saklama ve kullanma verimliliğini arttırabilir.
Çıktı Formatlama: Bazı durumlarda, veriyi uygun bir formatta göstermek veya yazdırmak isteyebilirsiniz. Tip dönüşümü, veriyi belirli bir veri tipine dönüştürerek, daha uygun bir çıktı formatı elde etmenizi sağlar.
Ancak, tip dönüşümü kullanırken dikkatli olmanız gereken bazı noktalar vardır. Veri kaybı, veri aralığı aşımı ve hatalı dönüşümler gibi sorunlarla karşılaşabilirsiniz. Bu nedenle, uygun veri doğrulaması ve hata kontrolü yapmanız önemlidir. Ayrıca, gereksiz dönüşümlerden kaçınmak ve veri türü uyumluluğunu sağlamak için iyi bir tasarım ve programlama yaklaşımı benimsemek önemlidir.
Bu bilgilerden sonra tip dönüşümlerinin nasıl yapıldığına göz atabiliriz.
Otomatik Tip Dönüşümü (Implicit Casting) Nedir?
Otomatik dönüşüm, bir veri tipinin daha geniş bir veri tipine dönüştürülmesidir. Bu dönüşüm Java tarafından otomatik olarak gerçekleştirilir ve ek bir kod yazmanıza gerek yoktur. Java, veri kaybı olmayacak şekilde daha küçük bir veri tipini daha büyük bir veri tipine dönüştürebilir. Örneğin, int veri tipini long veri tipine dönüştürelim.
1 2 3 4 |
int number= 10; long bigNumber = number; // auto-transform |
Yukarıdaki örnekde int olarak tanımladığım number adlı bir değişkenim var. İkinci satırda ise long veri tipinde tanımladığım bigNumber adlı değişkenimi “=” operatörü kullanarak number adlı değişkenin değerine atadım.
Bu durumda Java, int değerini otomatik olarak long değerine dönüştürdü çünkü long, int’ten daha büyük bir veri tipidir. Buna otomatik değişim diyoruz.
Açık Tip Dönüşümü (Explicit Casting) Nedir?
Açık dönüşüm, bir veri tipinin daha küçük bir veri tipine dönüştürülmesidir. Bu dönüşümü gerçekleştirmek için dönüşüm operatörü olan parantez içinde hedef veri tipini belirtmeniz gerekmektedir. Ancak, bu dönüşümde bilgi kaybı olabilir ve hatalar ortaya çıkabilir. Örneğin, bir long veri tipini int veri tipine dönüştürelim.
1 2 3 4 |
long bigNumber = 100; int number = (int) bigNumber; // Open transformation |
Bu durumda, bigNumber değerini int’e dönüştürmek için açık bir dönüşüm kullandık. Ancak, burada dikkat etmemiz gereken bir nokta, long veri tipinin int’in aralığını aşmamasıdır. Aksi takdirde, beklenmedik sonuçlar elde edebiliriz.
Bu şekilde, Java’da veri tipleri arasında dönüşüm yapabilirsiniz. Ancak, dönüşüm yaparken, veri türlerinin uyumluluklarını ve aralıklarını dikkate almanız önemlidir. Uygun olmayan bir dönüşüm yapmaya çalışırsanız, beklenmedik sonuçlar elde edebilir veya hatalar alabilirsiniz.
Dikkat ederseniz yukarıda yaptığımız dönüşümler sadece sayısal değerler arasında yapılan dönüşümlerdi.
Peki String veri tipi ve sayısal bir veri tipi arasında dönüşüm yapmamız gerekirse?
String ve Sayısal Tipler Arasında Dönüşüm
Java’da bir String verisini sayısal veri tipine dönüştürmek için bir kaç farklı yöntem var. İlk önce int ve String arasındaki dönüşüm metodlarını daha sonra ise String ve diğer sayısal veri tipleri arasındaki değişim metodlarını göstereceğim.
String Veri Tipini int Veri Tipine Dönüştürme
Integer.ParseInt() veya Integer.ValueOf() metodunu kullanabilirsiniz.
İşte her iki yöntemin kullanımı:
Integer.ParseInt() yöntemi : Bu yöntem bir String’i int’e dönüştürmek için kullanılır. Dönüştürme işlemi gerçekleştikten sonra elde edilen int değeri döndürülür. Ancak, dönüştürülen String ifadesi tamamen sayısal bir değer içermelidir; aksi takdirde NumberFormatException hatası alırsınız.
Örneğin;
1 2 3 4 |
String numberStr= "1234"; int number = Integer.parseInt(numberStr); |
Integer.ValueOf() yöntemi : Bu yöntem de bir String’i int’e dönüştürmek için kullanılır. Integer.ValueOf() metodu, bir String’i Integer nesnesine dönüştürür ve sonuç olarak Integer nesnesini döndürür. Daha sonra, elde edilen Integer nesnesini intValue() metoduyla int veri tipine dönüştürebilirsiniz.
Örneğin;
1 2 3 4 5 |
String numberStr = "1234"; Integer integerNumber = Integer.valueOf(numberStr); int number = integerNumber.intValue(); |
Her iki yöntem de String ifadesini int’e dönüştürmenize olanak sağlar. Ancak, Integer.parseInt() daha sık kullanılan bir yöntemdir. Dönüştürme işlemi sırasında dikkat etmeniz gereken nokta, dönüştürülen String ifadesinin tamamen sayısal bir değer içermesi ve NumberFormatException hatasını önlemek için gerekli giriş doğrulamasını yapmanızdır.
Int Veri Tipini String Veri Tipine Dönüştürme
String.valueOf() yöntemi: Bu yöntem, herhangi bir veri tipini String’e dönüştürmek için kullanılabilir. Bir int değerini String’e dönüştürmek için String.ValueOf() yöntemini kullanabilirsiniz.
Örneğin;
1 2 3 4 |
int number= 1234; String numberStr = String.valueOf(number); |
String concatenation (String birleştirme): String birleştirme operatörü (+) kullanarak bir int değerini bir String ile birleştirerek dönüşüm yapabilirsiniz. Bu durumda, Java otomatik olarak int’i String’e dönüştürür.
Örneğin;
1 2 3 4 |
int number = 1234; String numberStr = "" + number; |
String ve Byte, Float, Double, Short, Long Arasındaki Dönüşümler
Bu dönüşümler yukarıda anlatılanlarla oldukça paralel. Fark sadece parse, valueOf() ve toString() işlemlerinde kullanacağımız veri tipini yazmak olacak. İsterseniz hepsini örneklendirelim.
String’i byte, float, double, short ve long’a dönüştürmek:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
String byteNumber = "10"; byte number_1 = Byte.valueOf(byteNumber); //Method 1 -> valueOf() byte number_2 = Byte.parseByte(byteNumber); //Method 2 -> parse String floatSayi = "10.11"; float number__7 = Float.valueOf(floatNumber); //Method 1 -> valueOf() float number_8 = Float.parseFloat(floatNumber); //Method 2 -> parse String doubleSayi = "191.123213"; double number_9 = Double.valueOf(doubleNumber); //Method 1 -> valueOf() double number_10 = Double.parseDouble(doubleNumber); //Method 2 -> parse String shortNumber = "911"; short number_3 = Short.valueOf(byteNumber); //Method 1 -> valueOf() short number_4 = Short.parseShort(byteNumber); //Method 2 -> parse String longNumber = "912912912"; long number_5 = Long.valueOf(longNumber); //Method 1 -> valueOf() long number_6 = Long.parseLong(longNumber); //Method 2 -> parse |
byte, float, double, short ve long ’u Stringe dönüştürmek:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
byte byteNumber = 5; String number_1 = String.valueOf(byteNumber); //Method 1 -> valueOf() String number_1 = Byte.toString(byteNumber); //Method 2 -> toString() String number_1 = byteNumber + " "; //Method 3 -> concat float floatNumber = 911.11; String number_1 = String.valueOf(floatNumber); //Method 1 -> valueOf() String number_1 = Float.toString(floatNumber); //Method 2 -> toString() String number_1 = floatNumber + " "; //Method 3 -> concat double doubleNumber = 918779.987; String number_1 = String.valueOf(doubleNumber); //Method 1 -> valueOf() String number_1 = Double.toString(doubleNumber); //Method 2 -> toString() String number_1 = doubleNumber + " "; //Method 3 -> concat Short shortNumber = 911; String number_1 = String.valueOf(shortNumber); //Method 1 -> valueOf() String number_1 = Short.toString(shortNumber); //Method 2 -> toString() String number_1 = shortNumber + " "; //Method 3 -> concat long longNumber = 35575879; String number_1 = String.valueOf(longNumber); //Method 1 -> valueOf() String number_1 = Long.toString(longNumber); //Method 2 -> toString() String number_1 = longNumber + " "; //Method 3 -> concat |
Bu dersimde Java tip dönüşümleri konusunu ele aldım. Eğer sizde bu yazıyı ve önceki yazıları iyi anladığınızı düşünüyorsanız bir sonraki yazıya geçmeye hazırsınız.
Eğer anlamadığınız bir yer olduysa yada önceki yazılardan okumadıklarınız varsa Java Değişkenler, Java Comment Line, Java Veri Tipleri yazılarını okumanızı tavsiye ederim.
Umarım sizler için faydalı bir yazı olmuştur.
Happy Coding!
Cok faydali bir yazi olmus. emeginize saglik hocam.
Sizin için faydalı olmasına sevindim. Takipte kalmanız dileğiyle.