Kotlin Temelleri

Sibel Yıldız
4 min readFeb 4, 2020

--

Merhaba, bu yazımda Kotlinde bulunan “Değişken Tipleri” ve “Tip Dönüşümleri (Type Conversion)” konularına değineceğim.

Değişken Tipleri

  • Numbers (Byte, Short, Int, Long, Float, Double)
  • Char
  • Boolean
  • Array
  • String

Değişken Tipleri

Değişkenin nasıl tanımlanacağını bilmeden değişken tiplerini öğrenmemiz doğru olmaz. O yüzden konumuza başlamadan önce, Kotlin’de bir değişken nasıl tanımlanır? sorusunu cevaplayalım.

Kotin’de “var” ya da “val” anahtar kelimeleri kullanılarak 2 şekilde değişken tanımlaması yapılabilir. Peki ne demek bu val, var?

  • val (value) : Değerin get edilebilir ancak set edilemez olduğu anlamına gelir. Yani değişken için ilk değer ataması yapıldıktan sonra yeni bir değer ataması yapılamaz. Eğer bunu yapmaya çalışırsak ide bize hata verecektir.
  • var (variable) : Değerin hem get hem de set edilebilir olduğu anlamına gelir. Yani değişken için ilk değer ataması yapıldıktan sonra başka bir yerde name isimli değişkenin değeri değiştirilebilir.

Değişken tanımlamayı öğrendiysek şimdi ise tiplerini öğrenmeye geçebiliriz.

Numbers (Sayılar)

Kotlinde sayısal veri tipleri farklı boyut ve değer aralıklarına göre 6 adettir.

Değişkene değer ataması yapılırken maximum performans alabilmek için doğru değişken tipini kullanmak önemlidir. Tip çıkarımı(Type Inference) sırasında eğer sayı Int değer aralığından büyük değerse tipi default olarak Int set edilir. Eğer Int ifadesinden büyükse default olarak Long set edilir.

Değişkenlerin değer aralıklarını aşağıdan inceleyebilirsiniz.

Float ve Double veri türü değer olarak ondalıklı sayıları alır.

  • Float bir sayı tanımlarken ifadenin sonuna “F” konulmalı. Yoksa ide hata verir.
  • Long bir sayı tanımlarken “L” konulabilir. Fakat konulması zorunlu değildir.
  • Number değişken tanımı yapılırken daha okunaklı olması için underscores “_” kullanılabilir.
  • “===” operatörü değişkenlerin referansını karşılaştırırken kullanılır.
  • “==” operatörü değişkenlerin değerini karşılaştırırken kullanılır.

Characters

Sadece bir karakter tutmak için kullanılan bir veri tipidir. Tek tırnak (‘ ’) içerisine yazılırlar.

  • Tek tırnakların arasına, harf, sayı, escape char ya da unicode yazarak kullanılır.
  • Tek karakter olsa bile, eğer çift tırnak içerisine yazılırsa String olur, Char olmaz.

Char olarak tanımlanan değişkenlerin int’e tip dönüşümü yapılırken ASCII tablosundaki karşılığını elde ederiz

Boolean

Boolean veri tipi hafızada 1 byte yer kaplar. Mantıksal bir veri tipidir. True(Doğru) veya False(Yanlış) olarak iki değer alır. Programlama dillerinde boolean veri tipi çok önem taşır. Özellikle, program akışının yönlendirilmesinde ve döngü yapılarında olmazsa olmaz tiplerdir.

  • “&&” (and) , “||” (or) , “!”(değil), xor gibi mantıksal operatörler ile beraber kullanılır.
  • Boolean değerin true olmasını kontrol ettirmek için “== true” seklinde kontrole gerek yoktur. Zaten true ise süslü parantezler içerisine girecektir.

Arrays (Diziler)

Diziler çok sayıda veri tutmamızı sağlayan yapılardır. Kotlinde dizi oluşturmak için kullanmamız gereken temel sınıflardan bir tanesi Array sınıfıdır. Çeşitli kullanımları mevcuttur.

  • arrayOf() Aynı tipte elemanları tutmak için kullanılır.
  • arrayOf<Any> Farklı tipteki verileri tek bir dizide tutmak için kullanılır.
  • arrayOfNulls<Type>(size) → Belirlediğimiz tip ve size değeri kadar null değer tutan dizi tanımlamak için kullanılır.
  • Array<Type>(size){higher order function} şeklinde de tanımlanabilir. Bu durumda higher order function içerisindeki son satıra denk gelen değerler diziyi oluşturur.
  • ByteArray, ShortArray, IntArray, LongArray, DoubleArray, FloatArray gibi primitive array tanımlamaları da yapılabilir. Bu tarz tanımlamalarda ilgili index değerine atama için set(index, value) ya da [index] = value kullanılır. İlgili index değerindeki değişken değerine get(index) ya da [index] seklinde ulaşılır.

String

String veri tipi bir karakter dizisidir. Değişkenin değerleri çift tırnak (“ ”) içerisine yazılır.

  • Çift tırnak içerisinde yazılan bütün ifadeler string olarak algılanır. Örneğin aşağıdaki gibi number değişkenlerine çift tırnak içerisinde int değerler vermiş gibi görünse de aslında birer string değerdir. Bunları + operatöri ile topladığımızda 19 ifadesini görmeyeceğiz.
  • Farklı tipteki bir değişkenin önüne String bir değişken ya da ifade koyarak “+” operatörü ile toplarsak, sonuç String olur. Ancak farklı tipte bir değişkenin sonuna String bir değişken ya da ifade koyarsak kod çalışmaz.
  • Ekstra bir kullanım olan Raw String kullanımımız var. String ifade 3 çift tırnak içerisinde yazılarak kullanılır. Kullanım amacı yazdığımız ifadeyi direk yazdığımız şekilde bastırır.
val rawTree: String = """
*
***
*****
"""
// Oluşturduğumuz ağaç şekli aralarındaki boşluklar silinmeden, string ifade birleştirilmeden aynı şekilde çıktı verir.

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

Tip dönüşümünde sayı tiplerinin birbirine dönüşümü gerçekleştirilir. İki çeşit tip dönüşümü vardır. Explicit Type Conversion(Açık Dönüşüm) ve Implicit Type Conversion(Kapalı Dönüşüm) olmak üzere. Kotlinde Implicit Type Conversion yoktur.

Byte < Short < Int < Long < Float < Double

Tip dönüşümünde kullanabileceğimiz bazı fonksiyonlar şu şekildedir;

  • toByte()
  • toShort()
  • toInt()
  • toLong()
  • toFloat()
  • totoDouble()
  • toChar()

Değer aralığı küçük olan tipler büyük olan tiplere, sorunsuz, acık olarak(explicit) dönüştürülebilir. Ancak değer aralığı büyük olan tipler küçük olan tiplere acık olarak(explicit) dönüştürülürken, değer dönüştürüleceği değer aralığı dışında kalıyorsa bu tip donuşumu sırasında yanlış değer atamaları yapılacaktır.

Char ve diğer number veri tipleri arasında tip dönüşümü yaptığımızda; örneğin char veri tipindeki değişkeni int veri tipine dönüştürürsek bize ASCII tablosundaki karşılığını verir. Aynı şekilde int veri tipindeki bir değeri char tipine dönüştürürsek int değerinin ASCII tablosundaki karakter karşılığını verir.

Yazımızın sonuna geldik. Kotlin temellerine giriş yaptık. Değişken tipleri ve tip dönüşümleri basitçe bu şekildeydi. Daha öğreneceğimiz çok şey var. Bir sonraki yazımda görüşmek üzere.

Bol kodlu ve sabırlı günler dilerim :)

--

--