Kişisel web sayfamda yazılım, teknoloji ve genel hayat hakkında paylaşımlar yapmayı hedefliyorum.

Kotlin ile Programlama Dersleri – Değişkenler ve Veri Tipleri

Kotlin serisinin ikinci yazısından merhaba. Bugün Kotlinde değişkenler ve veri tiplerini inceleyeceğiz.

Type Inference Nedir?

Kotlinde Javanın aksine bir değişken tanımlanırken tip belirtmek zorunlu değildir. Kotlin, değişkene atanan değere göre tipi belirler.

Eğer bir değişkene kısa bir sayısal değer atanırsa bu değişken standart olarak Int olarak tip alır. Uzun haneli bir sayısal değer için ise bu standart tip Long olur.

Kotlinde Primitive Tipler Yok mu?

Kotlinde veri tipleri, diğer dillerden çok farklı değildir. Primitive (ilkel) denilen tiplerde bir farklılık vardır. Kotlin dilinde primitive tipler yani int, float, double gibi küçük harfle başlayan veri tipleri yoktur ama aynı zamanda da vardır 🙂

Şöyle ki, Kotlin dilinde idemizin başına geçip kodlamaya başladığımızda primitive tipleri kullanamayız bunların yerine değerleri sarmayalan (wrapper) sınıflarını kullanılırız. Fakat Kotlin JVM tabanlı bir dil olduğu için bytecode çevrimi esnasında bizim kullanıdığımız değişkenleri primitive halinde düzenler. Böylelikle primitive ve reference tipler arasındaki performans farkından etkilenmiyoruz.

Yani işin özü, Kotlin syntaxında primitive tipler yoktur, bunun yerine sınıflar kullanılır fakat değişkenlerimiz JVM tarafına primitive tip olarak geçer.

Val vs Var

Kotlinde bir değişken tanımlamak için iki seçeneğimiz vardır. Aradaki fark arkaplanda bu değişkenlere setter işlemi atanması ya da atanmamasıdır:

  • val(value): Değeri ilk atamadan sonra değişmeyen(immutable) değişken türü.
  • var(variable): Değeri değişebilen (mutable) değişken türü.

Tanımladığımız her değişkeni val tanımlayıp gerektiği yerde var kullanmayı alışkanlık edinmek multithread işlem senaryolarında işlerimizi garantiye alacaktır.

Numbers

Sayısal ifadeler için aşağıdaki tabloda bulunan tiplerden yararlanabiliriz. Eğer ondalıklı sayılarla çalışacaksak burada Float ve Double değerleri karşımıza çıkıyor.

  • Long değerlerin sonuna L eklemek zorunlu değilken; Float değerlerin sonuna f-F eklemek gereklidir.
TypeSize(Bit)Min ValueMax Value
Byte8-128127
Short16-3276832767ı
Int32-2,147,483,648 (-231)2,147,483,647 (231 – 1)
Long64-9,223,372,036,854,775,808 (-263)
9,223,372,036,854,775,807 (263 – 1)
https://kotlinlang.org/docs/reference/basic-types.html

TypeSize(Bits)Significant bitsExponent bitsDecimal digits
Float322486-7
Double64531115-16
https://kotlinlang.org/docs/reference/basic-types.html

Type Conversion

Tipler arası dönüşümde iki farklı yöntem vardır:

  • Implicit (Kapalı) Conversion: Değerler herhangi bir cast işlemi yapılamadan atanabilir. Yeni değer, büyük aralıklı olan değerin tipine sahip olur.
  • Explicit (Açık) Conversion: Tip dönüşümünde fonksiyonlar ile hedef tip belirtilir.

Kotlinde tip dönüşümü için Explicit Conversion kullanılmaktadır.

Characters

Kotlinde karakterler için char tipi kullanılır. Değişken değeri tek tırnak arasına yazılır. Bir char ifadeye tek tırnaklar arasında sayı, harf, escape char (kaçış karakterleri) ya da unicode veriler yazılabilir.

Bazı escape karakterler:

  • ‘\n’ ——> alt satır
  • ‘\t’ ——> bir tab boşluk
  • ‘\b’ ——> backspace
  • ‘\r’ ——> satır başı
  • ‘\” ——> Tek Tırnak (‘) karakteri
  • ‘\”‘ ——> Çift Tırnak (“) karakteri
  • ‘\\’ ——> \ Karakteri
  • ‘\$’ ——> Dolar ($) karakteri

Boolean

true ya da false değerler için boolean ifadeler kullanılır. Bazı dillerin aksine 0 veya 1 değerleri Kotlin dili kabul etmez.

String

Birden fazla karakterden oluşan veriler için kullanılan veri türüdür. Char dizisi de denilebilir. Değişken değeri çift tırnaklar arasına (“veri”) yazılır.

Bir String ifadenin sonuna + işareti ile eklemeler yapılabilir.

String Template

Kotlinde bir değişkeni, String ifadenin içinde doğrudan kullanabilmemizi sağlayan yöntemdir. “$” işareti ile değişken çağrılır. Eğer değişkenin bir değerini kullanacaksak parantez kullanmamız gerekir.

Raw String

Üç adet çift tırnak grubu arasında yazılan string ifadeler, biçimlendirildiği şekilde ekrana bastırılır.

Arrays

Birden fazla değeri tek bir dizide saklamak için arrayler kullanılabilir. Kotlinde array oluşturmanın birden fazla yolu vardır.

Ranges

Kotlinin bir diğer güzelliği olan aralıklar, oldukça kullanışlı yapılardır.

  • Verilen iki aralık dahilindeki değerleri kapsar.
  • Aralık belirtmek için ilk ve son değerin arasına “..” karakterleri eklenir.
  • İleri yönlü (rangeTo) veya geri yönlü (downTo) hareket ettirilebilir.
  • step” ile artım ya da azalım oranı verilebilir.
  • İlk değişken (first) ya da son değişkene (last) erişilebilir.

Nullable Types

Kotlinde bellekte henüz yer edinmemiş nesneler, nullable olarak adlandırılır. Bu değişkenlere doğrudan erişim ise NPE (null pointer exception) hatasını doğurur fakat Kotlinin Null Safety yapısından ötürü bu hataya ulaşmak için idenin dil uyarılarını es geçmek gerekir.

Bir değişkenin null olabileceğini belirtmek için “?” işareti kullanılırken; değişkenin null olmadığını söylemek için “!!” işareti kullanılır.

Ekran görüntüsünde görüldüğü gibi Kotlinde npe almak imkansız değil fakat bunun için bir önceki adımda yaptığımız şeyleri yok saymamız gerekir (null değeri olduğu halde olmadığını söylemek). Eğer null olan bir değişkene null değil, değeri var dersek kodumuz bu şekilde çalışır.

Elvis Operatörü(?:)

Bir değişkenin değeri null ise a işlemini; null değil ise b işlemini yapmak istersek bu operatörü kullanabiliriz.

Birçok detaya değinmemiş olsak da Kotlinde veri tipleri ve değişkenlere bir çerçeve çizdiğimize inanıyorum.

Daha fazla detay için Kotlin resmi dökümanı https://kotlinlang.org/docs/reference/

Ekran görüntülerindeki Kotlin denemelerini idesiz gerçekleştirmek için https://play.kotlinlang.org/

Bir sonraki yazıda görüşmek üzere…

Share

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir