Kotlin có một tập hợp các toán tử để thực hiện các phép toán số học, phép gán, so sánh và hơn thế nữa. Bạn sẽ học cách sử dụng các toán tử đó trong bài viết này.

Toán tử là các ký hiệu đặc biệt (ký tự) thực hiện các phép toán trên toán hạng (biến và giá trị). Ví dụ, +là một toán tử thực hiện bổ sung.

Trong bài viết về biến Java, bạn đã học cách khai báo các biến và gán giá trị cho các biến. Bây giờ, bạn sẽ học cách sử dụng các toán tử để thực hiện các thao tác khác nhau trên các biến đó.

1. Toán tử số học

Dưới đây là danh sách các toán tử số học trong Kotlin:

toán tửÝ nghĩa
+Toán tử cộng (cũng được sử dụng để nối chuỗi)
Toán tử trừ
*Toán tử nhân
/Toán tử chia
%Toán tử mô đun (lấy phần dư)

Ví dụ: Toán tử số học

/*
Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: cafedevn@gmail.com
Fanpage: https://www.facebook.com/cafedevn
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/

fun main(args: Array<String>) {

    val number1 = 12.5
    val number2 = 3.5
    var result: Double

    result = number1 + number2
    println("number1 + number2 = $result")

    result = number1 - number2
    println("number1 - number2 = $result")

    result = number1 * number2
    println("number1 * number2 = $result")

    result = number1 / number2
    println("number1 / number2 = $result")

    result = number1 % number2
    println("number1 % number2 = $result")
}

Khi bạn chạy chương trình, kết quả sẽ là:

number1 + number2 = 16.0
number1 - number2 = 9.0
number1 * number2 = 43.75
number1 / number2 = 3.5714285714285716
number1 % number2 = 2.0

Toán tử + cũng được sử dụng để nối các giá trị String .

Ví dụ: Nối các String

fun main(args: Array<String>) {

    val start = "Talk is cheap. "
    val middle = "Show me the code. "
    val end = "- Linus Torvalds"

    val result = start + middle + end
    println(result)
}

Khi bạn chạy chương trình, kết quả sẽ là:

Talk is cheap. Show me the code. - Linus Torvalds

Các toán tử số học làm việc như thế nào?

Giả sử, bạn đang sử dụng toán tử số học + để cộng hai số a và b.

Biểu thức a + b gọi hàm thành viên a.plus(b). Toán tử plus được nạp chồng để làm việc với các giá trị String và các kiểu dữ liệu cơ bản khác (trừ CharBoolean ).

// + operator for basic types
operator fun plus(other: Byte): Int
operator fun plus(other: Short): Int
operator fun plus(other: Int): Int
operator fun plus(other: Long): Long
operator fun plus(other: Float): Float
operator fun plus(other: Double): Double

// for string concatenation
operator fun String?.plus(other: Any?): String

Bạn cũng có thể sử dụng  toán tử + để làm việc với các kiểu dữ liệu do người dùng xác định (như các đối tượng) bằng cách nạp chồng hàm plus().

Đề nghị đọc: nạp chồng toán tử Kotlin

Dưới đây là bảng các toán tử số học và các hàm tương ứng của chúng:

Biểu thức Tên hàmDịch sang ngôn ngữ lập trình Kotlin
a + bcộnga.plus (b)
a – btrừa.minus (b)
a * bnhâna.times (b)
a / bphép chia lấy phần nguyêna.div (b)
a% bphép chia lấy phần dưa.mod (b)

2. Toán tử gán

Toán tử gán được sử dụng để gán giá trị cho một biến. Trước đây, chúng ta đã từng sử dụng một toán tử gán đơn giản, đó là toán tử =.

val age = 5

Ở đây, 5 được gán cho biến age bằng cách sử dụng toán tử =.

Dưới đây là danh sách tất cả các toán tử gán và các chức năng tương ứng của chúng:

Biểu thứcTương đương vớiDịch sang ngôn ngữ lập trình Kotlin
a + = ba = a + ba.plusAssign (b)
a – = ba = a – ba.minusAssign (b)
a * = ba = a * ba.timesAssign (b)
a / = ba = a / ba.divAssign (b)
a% = ba = a% ba.modAssign (b)

Ví dụ: Toán tử gán

fun main(args: Array<String>) {
    var number = 12

    number *= 5   // number = number*5
    println("number  = $number")
}

Khi bạn chạy chương trình, kết quả sẽ là:

number = 60

Đề nghị đọc: nạp chồng toán tử gán trong Kotlin .

3. Toán tử tiền tố một ngôi và toán tử tăng/ giảm

Dưới đây là bảng các toán tử một ngôi, ý nghĩa của chúng và các hàm tương ứng:

Toán tửÝ nghĩaBiểu thứcDịch sang ngôn ngữ lập trình Kotlin
+Cộng một ngôi+ mộta.unaryPlus ()
Trừ một ngôi (đảo dấu)-aa.unaryMinus ()
!không (đảo ngược giá trị)!a.not()
++Tăng: tăng giá trị lên 1++ aa.inc ()
Giảm: giảm giá trị đi 1–aa.dec ()

Ví dụ: Toán tử một ngôi

/*
Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: cafedevn@gmail.com
Fanpage: https://www.facebook.com/cafedevn
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/

fun main(args: Array<String>) {
    val a = 1
    val b = true
    var c = 1

    var result: Int
    var booleanResult: Boolean

    result = -a
    println("-a = $result")

    booleanResult = !b
    println("!b = $booleanResult")

    --c
    println("--c = $c")
}

Khi bạn chạy chương trình, kết quả sẽ là:

-a = -1
!b = false
--c = 0

Đề nghị đọc: nạp chồng toán tử một ngôi

4. Toán tử so sánh và toán tử bằng

Dưới đây là bảng các toán tử bằng và so sánh, ý nghĩa của chúng và các hàm tương ứng:

toán tửÝ nghĩaBiểu thứcDịch sang ngôn ngữ lập trình Kotlin
>lớn hơna> ba.compareTo (b)> 0
<bé hơna<ba.compareTo (b) <0
> =lớn hơn hoặc bằnga> = ba.compareTo (b)> = 0
<=nhỏ hơn hoặc bằnga <= ba.compareTo (b) <= 0
==bằnga == ba? .equals (b) ?: (b === null)
! =không bằnga! = b!(a?.equals(b) ?: (b === null))

Các toán tử so sánh và toán tử bằng được sử dụng trong luồng điều khiển như biểu thức if , biểu thức when và các vòng lặp .

Ví dụ: Toán tử so sánh và toán tử bằng

/*
Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: cafedevn@gmail.com
Fanpage: https://www.facebook.com/cafedevn
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/

fun main(args: Array<String>) {

    val a = -12
    val b = 12

    // use of greater than operator
    val max = if (a > b) {
        println("a is larger than b.")
        a
    } else {
        println("b is larger than a.")
        b
    }

    println("max = $max")
}

Khi bạn chạy chương trình, kết quả sẽ là:

b is larger than a.
max = 12

Đề nghị đọc: nạp chồng các toán tử so sánh và toán tử bằng trong Kotlin

5. Toán tử logic

Có hai toán tử logic trong Kotlin: || và &&

Đây là bảng các toán tử logic, ý nghĩa của chúng và các hàm tương ứng.

toán tửMô tảBiểu thứcHàm tương ứng
| |trả về true nếu một trong các biểu thức Boolean là true(a>b)||(a<c)(a>b)or(a<c)
&&trả về true nếu tất cả các biểu thức Boolean là true(a>b)&&(a<c)(a>b)and(a<c)

Lưu ý rằng, or và and là các hàm hỗ trợ ký hiệu infix .

Toán tử logic được sử dụng trong luồng điều khiển như biểu thức if , biểu thức when và vòng lặp .

Ví dụ: Toán tử logic

fun main(args: Array<String>) {

    val a = 10
    val b = 9
    val c = -1
    val result: Boolean

    // result is true is a is largest
    result = (a>b) && (a>c) // result = (a>b) and (a>c)
    println(result)
}

Khi bạn chạy chương trình, kết quả sẽ là:

true

Đề nghị đọc: nạp chồng các toán tử logic trong Kotlin

6. Toán tử in

Toán tử in được sử dụng để kiểm tra xem một đối tượng có thuộc một collection hay không.

toán tửBiểu thứcDịch sang ngôn ngữ lập trình Kotlin
ina trong bb.contains (a)
!ina !trong b!b.contains (a)

Ví dụ: Toán tử in

fun main(args: Array<String>) {

    val numbers = intArrayOf(1, 4, 42, -3)

    if (4 in numbers) {
        println("numbers array contains 4.")
    }
}

Khi bạn chạy chương trình, kết quả sẽ là:

numbers array contains 4.

Đề nghị đọc: nạp chồng toán tử trong Kotlin 

Toán tử truy cập chỉ số

Dưới đây là một số biểu thức sử dụng toán tử truy cập chỉ số với các hàm tương ứng trong Kotlin.

Biểu thứcDịch sang ngôn ngữ lập trình Kotlin
a[i]a.get(i)
a[i, n]a.get(i, n)
a[i1, i2, …, in]a.get(i1, i2, …, in)
a[i] = ba.set(i, b)
a[i, n] = ba.set(i, n, b)
a[i1, i2, …, in] = ba.set(i1, i2, …, in, b)

Ví dụ: Toán tử truy cập chỉ số

fun main(args: Array<String>) {

    val a  = intArrayOf(1, 2, 3, 4, - 1)
    println(a[1])   
    a[1]= 12
    println(a[1])
}

Khi bạn chạy chương trình, kết quả sẽ là:

2
12

Đề nghị đọc: Toán tử truy cập Kotlin Index nạp chồng

8. Toán tử invoke

Dưới đây là một số biểu thức sử dụng toán tử invoke với các hàm tương ứng trong Kotlin.

Biểu thứcDịch sang ngôn ngữ lập trình Kotlin
a()a.invoke()
a(i)a.invoke(i)
a(i1, i2, …, in)a.inkove(i1, i2, …, in)
a[i] = ba.set(i, b)

Trong Kotlin, dấu ngoặc đơn được dịch để gọi hàm thành viên invoke.

Đề nghị đọc: nạp chồng toán tử invoke trong Kotlin

9. Toán tử bitwise

Không giống như Java,  trong Kotlin không có toán tử bitwise và bithift. Để thực hiện các thao tác này, cần sử dụng các hàm khác nhau (hỗ trợ ký hiệu infix):

  • shl – lùi về bên trái
  • shr -lùi về bên phải
  • ushr – Chuyển sang phải
  • and – Bitwise và
  • or – Bitwise hoặc
  • xor – Bitwise xor
  • inv – Đảo ngược bitwise

Truy cập trang này để tìm hiểu thêm về Hoạt động của Bitwise trong Kotlin.

Ngoài ra, không giống như Java, trong Kotlin không có toán tử ternary.

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!