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 đó.
Nội dung chính
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ừ Char và Boolean ).
// + 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àm | Dịch sang ngôn ngữ lập trình Kotlin |
a + b | cộng | a.plus (b) |
a – b | trừ | a.minus (b) |
a * b | nhân | a.times (b) |
a / b | phép chia lấy phần nguyên | a.div (b) |
a% b | phé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ức | Tương đương với | Dịch sang ngôn ngữ lập trình Kotlin |
a + = b | a = a + b | a.plusAssign (b) |
a – = b | a = a – b | a.minusAssign (b) |
a * = b | a = a * b | a.timesAssign (b) |
a / = b | a = a / b | a.divAssign (b) |
a% = b | a = a% b | a.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ĩa | Biểu thức | Dịch sang ngôn ngữ lập trình Kotlin |
+ | Cộng một ngôi | + một | a.unaryPlus () |
– | Trừ một ngôi (đảo dấu) | -a | a.unaryMinus () |
! | không (đảo ngược giá trị) | ! | a.not() |
++ | Tăng: tăng giá trị lên 1 | ++ a | a.inc () |
– | Giảm: giảm giá trị đi 1 | –a | a.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ĩa | Biểu thức | Dịch sang ngôn ngữ lập trình Kotlin |
> | lớn hơn | a> b | a.compareTo (b)> 0 |
< | bé hơn | a<b | a.compareTo (b) <0 |
> = | lớn hơn hoặc bằng | a> = b | a.compareTo (b)> = 0 |
<= | nhỏ hơn hoặc bằng | a <= b | a.compareTo (b) <= 0 |
== | bằng | a == b | a? .equals (b) ?: (b === null) |
! = | không bằng | a! = 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ức | Hà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ức | Dịch sang ngôn ngữ lập trình Kotlin |
in | a trong b | b.contains (a) |
!in | a !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ức | Dị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] = b | a.set(i, b) |
a[i, n] = b | a.set(i, n, b) |
a[i1, i2, …, in] = b | a.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ức | Dị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] = b | a.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.