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 }