Belajar Dasar Kotlin: Operator Dasar

Pada saat membuat program kita mungkin akan menginginkan untuk memanipulasi sebuah data. Untuk memanipulasi data kita bisa menggunakan Operator. Operator merupakan simbol yang melambangkan sebuah operasi. Operator membutuhkan data yang disebut dengan operan.

Arithmetic Operators

Untuk melakukan operasi aritmetika kita bisa menggunakan Operator Aritmetika. Operatornya adalah + (tambah), - (kurang), * (kali) / (bagi) dan % (modulus/sisa bagi).

Operator ini akan menghasilkan angka bertipe data Int. Namun, jika operannya ada yang bertipe data Float atau Double, angka yang dihasilkan adalah bilangan desimal. Untuk pembagian antara bilangan bulat (Int) hasilnya akan dibulatkan. Semua operator tadi bisa digunakan dengan semua tipe data angka.

println(5 + 7) // 12

val a = 50
val b = 7

println(a + b) // 57
println(a - b) // 43
println(a * b) // 350
println(a / b) // 7
println(a % b) // 1

println(50.0 / 7) // 7.142857142857143, Double
println(50 / 7.0) // 7.142857142857143, Double
println(50.0f / 7) // 3.3333333, Float

// operasi campuran
println((a + b) * a + 50 - 3) // 2897

Terdapat juga operator augmented assignment operator, yang merupakan penggabungan dari operator aritmetika dan assignment operator. Operator tersebut adalah +=, -=, *=, /= dan %=.

var a = 50

a += 7
// ekuivalen dengan a = a + 7
println(a) // 57

a -= 17
// ekuivalen dengan a = a - 17
println(a) // 40

a *= 20
// ekuivalen dengan a = a * 20
println(a) // 800

a /= 5
// ekuivalen dengan a = a / 5
println(a) // 160

a %= 16
// ekuivalen dengan a = a % 16
println(a) // 0

Tipe data Char dapat digunakan dengan operator + dan -. Namun, operan kedua harus berupa Int.

val char = 'j'

println(char - 2) // 'h'
println(char - 1) // 'i'
println(char) // 'j'
println(char + 1) // 'k'
println(char + 2) // 'l'

Tipe data String dapat digunakan sebagai operan operator + dan +=.

val name = "Rizal"
println("Saya bernama " + name) // Saya bernama Rizal
println("5 + 4 = " + (5 + 4)) // 5 + 4 = 9

Sangat disarankan menggunakan String Template daripada menggunakan operator +.

Increment dan Decrement Operators

Terdapat juga operator increment/tambah 1 (++) dan decrement/kurangi 1 (--).

var a = 50

a++
// Sama dengan a += 1
println(a) // 51
a--
// Sama dengan a -= 1
println(a) // 50

Equality Operators

Equality Operators merupakan operator yang digunakan untuk mengecek kesamaan dua data/nilai. Operatornya adalah == (sama dengan) atau != (tidak sama dengan). Operator ini akan menghasilkan nilai Boolean dan bisa digunakan pada variabel bertipe data apa pun.

println(7 == 7) // true
println(7 == 6) // false
println(7 != 6) // true
println(7 != 7) // false

val nama1 = "Rizal"
val nama2 = "Asri"
val nama3 = "Rizal"

println(nama1 == nama2) // false
println(nama1 == nama3) // true

Comparison Operators

Terdapat juga operator untuk membandingkan dua angka yaitu: < (kurang dari), <= (kurang dari atau sama dengan), > (lebih dari), dan >= (lebih dari atau sama dengan). Operator tadi disebut dengan Comparison operator.

Operator tersebut akan menghasilkan Boolean dan bernilaitrue jika kondisi terpenuhi. Operator ini bisa digunakan dengan semua tipe data angka dan tipe data Char.

val a = 10
val b = 3

println(a < b) // false
println(b < a) // true
println(2 < 2) // false
println(2 <= 2) // true
println(5 > 9) // false
println(10 > 5) // true

val myChar = 'e'

println(myChar > 'a') // true

Logical Operators

Terdapat juga 3 operator digunakan dengan nilai Boolean. Operator ! akan membalik nilai Boolean (true menjadi false dan sebaliknya).

println(!true) // false
println(!false) // true

Operator && hanya akan menghasilkan nilai true jika nilai kiri dan kanan bernilai true.

println(true && true) // true
println(true && false) // false
println(false && false) // false

Operator || akan menghasilkan true jika salah satu dari nilai kiri dan kanan bernilai true.

println(true || true) // true
println(true || false) // true
println(false || false) // false

Operator && dan || akan mengecek nilai dari kiri baru ke kanan. Ketiga operator tersebut dinamakan Logical Operators.

Operator tersebut juga dapat digabungkan membentuk operasi kompleks.

// Kedua kode berikut sebenarnya sama.
println(true && false || !false) // true
println(true && (false || !false)) // true

Indexing Operators

Indexing operators bisa digunakan untuk mendapatkan suatu item dari array. Operator ini berupa [] yang diisi oleh index dari item. Index dimulai dari 0. Tipe data kembalian dari operator ini sama seperti tipe data dari item Array.

val arrays = arrayOf(10, 15, 17)
println(arrays[0]) // 10
println(arrays[1]) // 15
println(arrays[2]) // 17

Operator ini juga dapat digunakan untuk mengubah nilai pada Array.

val arrays = arrayOf(10, 15, 17)
println(arrays[0]) // 10
arrays[0] = 13
println(arrays[0]) // 13


println(arrays[1]) // 15
arrays[1] = 16
println(arrays[1]) // 16

Operator ini juga bisa digunakan dengan tipe data String. Dalam kasus ini, kembaliannya bertipe data Char. Namun, operator ini tidak dapat digunakan untuk mengubah karakter pada String.

val contohString = "Riya"
println(contohString[0]) // R
println(contohString[contohString.length - 1]) // a

In Operators

Operator in bisa digunakan untuk mengecek apakah suatu item terdapat pada Arrays. Operator ini mengembalikan nilai Boolean.

val arrays = arrayOf(1, 5, 7)
println(1 in arrays) // true
println(7 in arrays) // true
println(8 in arrays) // false

Operator ini juga bisa mengecek apakah suatu angka berada pada rentang (range) tertentu.

println(1 in 1..10) // true
// Sama dengan 1 >= 1 && 1 <= 10
println(1 in 5..10) // false
// Sama dengan 1 >= 5 && 1 <= 10
println(6 in 5..10) // true
// Sama dengan 6 >= 5 && 6 <= 10