Kotlin 101: Temel Operatörler (Basic Operators)

Recep Fırıncıoğlu
3 min readFeb 5, 2020

Merhabalar,

Bu yazıda diğer yazılarımda değinecek olduğum bazı konular hakkında bilinmesi gereken temel yapılardan bahsedeceğim. Dolayısıyla gelecek konular için ön hazırlık niteliğinde değerlendirilebilir.

Operatörler değişkenler üzerinde çeşitli işlemler gerçekleştirmemizi sağlayan özel sembollerdir. Kotlin diğer porgramlama dillerinden, günlük hayatınızdan ya da matematik derslerinizden aşina olduğunuz çok sayıda operatörü desteklemektedir.

Bilmemiz gereken ve muhtemelen en sık kullanacağımız ilk operatör, “=” şeklinde gösterdiğimiz eşittir sembolü. Biz buna atama operatörü (assignment operator) diyeceğiz.

Temelde operatörleri aritmetik ve mantıksal olarak ikiye ayıracağız. Daha detaylı bilgi için buraya göz atmanızı öneririm.

Aritmetik Operatörler ( Arithmetic Operators)

Kod bloğunun çıktısı aşağıdaki gibi olacaktır. Bu işlemler aslında derleyici tarafında extension foksiyon denilen yapılarla çalışmakta. Sadece göz aşinalığı olması adına işlemin derleyicideki karşılığını yanına ekliyorum. Bunlara fonksiyonlar konusunda daha sonra değineceğiz.

a + b = 9                       // a + b -> a.plus(b)
c — b = 8 // c - b -> c.minus(b)
a * b = 18 // a * b -> a.times(b)
c / b = 2 // c / b -> c.div(b)
c / b = 2.3333333333333335 // c / b -> c.div(b)
c % a = 2 // c % a -> c.rem(a)

Aşağıda ise pratiklik olması adına sıklıkla başvurabileceğimiz augmented assignmets olarak tabir edilen kullanım örneğini görebilirsiniz.

Hemen aşağıda kod bloğunun çıktısını ve yanında extension fonksiyon yapısını inceleyebilirsiniz.

a += 4               // a = a + 4  ->  a.plusAssign(4)
a -= 5 // a = a - 5 -> a.minusAssign(5)
a *= 2 // a = a * 2 -> a.timesAssign(2)
a /= 4 // a = a / 4 -> a.divAssign(4)
b = a.rem(3) // b = a % 3 -> a.remAssign(3)

Mantıksal Operatörler ve Eşitlik Operatörleri ( Logic and Equality Operators)

Kotlinde > , , < , , == , != , ! , && ve || şeklinde sıralayabileceğimiz, yazının girişinde de bahsettiğim gibi matematik derslerinizden veya diğer programlama dillerinden aşina olabileceğinizi tahmin ettiğim, mantıksal operatörlerimiz var.

Peki bunlar nedir, ne yapıyorlar ? Örnekler üzerinden açıklayalım.

>    : Büyüktür        // a > b     a.compareTo(b) > 0
≥ :
Büyük eşittir // a >= b a.compareTo(b) >= 0
< :
Küçüktür // a < b a.compareTo(b) < 0
≤ :
Küçük eşittir // a <= b a.compareTo(b) <= 0
== :
Eşittir // a == b a?.equals(b) ?: (b === null)
!= :
Eşit değildir // a != b !(a?.equals(b) ?: (b === null))

Yukarıdaki örnekte a ve b değişkenleri için tanımlanan 55 ve 25 değerlerini yerlerine koyduğumuzda elde ettiğimiz boolean değerler ifadelerin karşısında verilmiştir.

!    : Değil (NOT Operator)
&& :
VE (AND Operator)
|| :
VEYA (OR Operator)
  • (a > b && a != 30) : a ve b değerlerimizi ilk ifade içim değerlendirdiğimizde. “(55 büyüktür 25) ve (a eşit değildir 30)” ifadesi ile karşılaşıyoruz. Her iki ifade de doğru olduğundan ve (and) işleminden “true” çıktısını elde ediyoruz.
  • (a > b).and(a != 30) : Bu ifade ise üstteki ile bire bir aynı. Tek farkla, && yerine x.and(y) şeklinde bir ve (and) yapısı kullanılmış.
  • (a > b).and(a == 30) : İfadesinde “(55 büyüktür 25) ve (a 25 eşittir 30)” şeklinde bir kıyaslama söz konusu. İfadenin ikinci değeri doğru olmadığından, ve (and) işleminden “false” çıktısını elde ediyoruz.
  • (a < b || b == 25) : İfadesindeki “55 küçüktür 25 veya 25 eşittir 25” durumlarından “25 eşittir 25” ifadesinin doğru olması veya (or) işleminden “true” çıktısını almamız için yeterli oldu.
  • (a < b || b <= 20) : Hemen altındaki ifadede her iki durum da yanlış olduğundan veya (or) işleminden “false” çıktısını elde ettik.
  • (stringValue != null) : Kod bloğuna baktığımızda stringValue değişkenine “Kotlin” stringinin atanmış olduğunu görebiliyoruz. Dolayısıyla değişkenin null olmadığından “true” çıktısını elde ediyoruz.
  • (stringValue == a.toString()) : stringValue değişkenine “Kotlin” stringi atanmış ve a.toString() ifadesi ile int tipindeki bir sayıyı explicit conversion metodu ile stringe dönüştürdük. İfadeler birbirine eşit olmadığından “false” çıktısını elde ettik.
  • (booleanValue || a == b) : Boolean tipindeki boolValue değişkeninin yukarıda false olarak tanımlandığını görüyoruz. 55 == 25 ifadesi de yanlış olduğundan “false” çıktısını elde ediyoruz.
  • (!booleanValue && a > b) : Boolean tipindeki boolValue değişkeninin “false” olduğunu biliyoruz, “ ! ” operatörü ile bu ifade terslendiğinden “!boolValue = true” olacaktır bu ifade ile “ 55 büyüktür 25 " ifadesini ve (and) işlemine soktuğumuzda “true” çıktısını elde etmiş olduk.

Yazıyı bu noktada sonlandırıyorum. Kullanılan değişken tipleri ve bunların dönüşümleriyle ilgili yazıma burdan ulaşabilirsiniz.

Kaynak

--

--