- fun main() {
- //Tip Dönüşümü – Casting
- /*
- * ben ne zamanki byte veri tipi oluşturuyorum
- * ve bellekte 8 bitlik alan yaratılıyor
- * eğer ben short veri tipi oluşturursam 16 bit
- * integer oluşturursam 32 bit bir alan oluşturucak
- * kutulara benzetirsek
- * byte--> bir yüzük kutusu
- * short-->bir ayakkabı kutusu
- * integer --> buz dolabı kutusu olsun
- * şimdi ben mantıken bir yüzük kutusunu bir ayakkabı
- * kutusunda tutabilirim
- * ve ayakkabı kutusunuda buzdolabı kutusuna sığdırabilirim
- * aynı şekilde dolaylı olarak yüzük kutusunu
- * buzdolabı kutusuna sığdırabilirim
- * ancak tam tersi bir durumda
- * bir buzdolabı kutusunu ayakkabı kutusuna
- * ya da bir yüzük kutusuna sığdıramam
- * işte bizde veri için konuşursak
- * veri kaybına uğrayabilir
- * ve tip dönüşümünün burdaki anlatılanlardan hiç farkı yok
- * yani siz 8bitlik ifadeyi 32 bitlik ifadede saklayabiliriz
- * 16 bitlik ifadeyi 8bit e koymaya çalışırken veri kaybı yaşarız
- *
- * her zaman değil.derken
- * ne zamanki 16 bitin hepsini kullandık 8bite aktarmaya çalışırsak
- * veri kaybı yaşayacaz
- *
- * atıyorum byte olarak 10 sayısıda bir byte değerdir ve byte sınırları
- * içerisindedir -128 ile 127 arasında bir değer sonuçta
- * shortta bir 3000 değerini byte ın içine koymaya çalışırsak sığmayacaktır
- *
- *
- *
- * */
- var shortSayi : Short = 32767 //üst sınırı
- var integerSayi : Int
- /*
- //shortSayinin değerini al
- //integerSayiya koy
- her ne kadar veri kaybı olmasada bir
- yerde elmalar var bir yerde armutlar var gibi
- düşünebilirsiniz
- bunların ikisininde veri türünün aynı
- olması lazım ki compiler böyle hata vermesin
- integerSayi = shortSayi
- */
- integerSayi = shortSayi.toInt()
- /*
- * bu napar ? burdaki short veri tipindeki
- * sayıyı integera çevirir ve integerSayi ya
- * atar
- *
- * */
- println(integerSayi)
- /*
- * naptık aslında short veri tipini integer
- * veri tipine çevirdik..
- * */
- //gelelim şimdi tam tersini yapalım
- //Küçük kutuya büyük kutu koymaya çalışalım
- var integerSayi2 : Int = 45000
- var shortSayi2 : Short
- shortSayi2 =integerSayi2.toShort()
- /*
- * burda naptık?
- * aslında short a sığmayacak bir veriyi
- * shorta sığdırdık
- * */
- println(shortSayi2)
- /*
- * -20536 çıktı niye böyle geldi?
- * verimiz böyle bozuldu işte
- * */
- //veri kaybını en iyi anlatma yolu double olacaktır
- var noktaliSayi : Double =50.556677
- var noktaliSayitoInt : Int
- noktaliSayitoInt = noktaliSayi.toInt()
- println(noktaliSayitoInt)
- /*
- * Çıktıda neden 50 sayısını gördük?
- * integer yapısı gereği napıyordu?
- * sadece tam sayı tutuyordu değilmi?
- * noktalı ifadelerle ilgilenmiyordu
- * double ın bu noktalı değerlerini
- * barındıramayacağı için aldı iptal etti
- * böylece sayının tam sayı kısmını aldı
- *
- *
- * */
- /*
- * biz bir noktalı sayı belirtip
- * veri tipini belirtmessek otomatik
- * double tanımlanacaktır
- *
- * mesela
- * var buyukSayi = diye tanımlayacağımız değişkenin
- * biz long olmasını istiyoruz double olmasını istemiyok
- * sonuçta long da tamsayıları tutan bir veri türü..
- *
- * yazarken sayının sonuna L koyarsan iş çözülüyor
- * long tipinde tanımlaniyür
- *
- * */
- /*
- * peki biz float tanımlamak istersek?
- * o zamanda noktalı sayımızın sonuna F
- * harfini koyacağız
- *
- * */
- var buyukOndalikliSayi = 5555.555F
- //floatı double a dönüştürelim
- //küçük kutuyu büyük kutuya koy yani
- var d1: Double = buyukOndalikliSayi.toDouble()
- println(buyukOndalikliSayi)
- // 5555.555 bozulmadı
- var sayi1 = 855
- println(sayi1.toString()+1) //8551 yazacak
- println(sayi1+1)
- var sayi3 : Int = 1000
- var sayi4 : Long
- sayi4 =sayi3.toLong()
- println(sayi4)
- toShort toInt toLong
- }