BẮT ĐẦU
CĂN BẢN
KIỂU DỮ LIỆU
CONTROL FLOW
FUNCTION
EXCEPTION
OOP
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Toán tử Kotlin – Arithmetic, Assignment, Unary, Logical

Những bài trước chúng ta đã sử dụng các biến (variables) và hằng (constants) trong Kotlin, và cũng mô tả các kiểu dữ liệu khác nhau. Tuy nhiên, việc có thể tạo các biến chỉ là một phần nhỏ, mà bạn hiểu ý nghĩa của chúng mới là vấn đề lớn.

Toán tử làm việc trên toán hạng và được sử dụng để tính toán. Ví dụ: + là một toán tử và khi tôi sử dụng nó trong một biểu thức như thế này: a + b, nó thực hiện phép cộng trên toán hạng a & b.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Trong bài này, ta sẽ tìm hiểu các loại toán tử có sẵn trong Kotlin và cách sử dụng chúng.

1. Cú pháp biểu thức trong Kotlin

Biểu thức cơ bản nhất bao gồm một toán tử, hai toán hạng và một phép gán. Sau đây là một ví dụ về biểu thức:

val myresult = 1 + 2

Trong ví dụ trên, toán tử (+) được sử dụng để cộng hai toán hạng (1 và 2) với nhau. Sau đó toán tử gán (=) gán kết quả của phép cộng vào một biến có tên myresult. Các toán hạng có thể là các biến (hoặc hỗn hợp các giá trị và biến) thay vì các giá trị số thực tế được sử dụng trong ví dụ.Trong phần còn lại của bài viết này, chúng ta sẽ xem xét các loại toán tử cơ bản có sẵn trong Kotlin.

2. Toán tử gán cơ bản

Chúng ta đã xem xét các toán tử gán cơ bản nhất, toán tử =. Toán tử gán này chỉ đơn giản gán kết quả của một biểu thức cho một biến. Về bản chất, toán tử gán = lấy hai toán hạng. Toán hạng bên trái là biến mà giá trị được gán và toán hạng bên phải là giá trị được gán. Toán hạng bên tay phải là một biểu thức thực hiện một phép toán số học hoặc logic hoặc gọi một hàm, kết quả của nó sẽ được gán cho biến. Các ví dụ sau đây là tất cả các sử dụng hợp lệ của toán tử gán:

var x: Int // Khai báo một biến mutable Int
val y = 10 // khai báo 1 biến immutable Int
 
x = 10 // gán giá trị cho x
x = x + y // gán giá trị cho x là kết quả của x + y
x = y // gán giá trị của y cho x

3. Toán tử số học Kotlin

Kotlin cung cấp một loạt các toán tử cho mục đích tạo các biểu thức toán học. Các toán tử này chủ yếu rơi vào loại toán tử nhị phân ở chỗ chúng có hai toán hạng. Ngoại lệ là toán tử nguyên âm (-) dùng để chỉ ra rằng một giá trị là âm chứ không phải là dương. Điều này trái ngược với toán tử trừ (-) có hai toán hạng (nghĩa là một giá trị được trừ từ một giá trị khác). Ví dụ:

var x = -10 // Unary - operator used to assign -10 to variable x
x = x - 5 // Subtraction operator. Subtracts 5 from x

Bảng sau liệt kê các toán tử số học chính của Kotlin:

Operator Description
-(unary) phủ định giá trị của biến hay biểu thứ
* nhân
/ chia lấy thương
+ cộng
- trừ
% chia lấy dư

Lưu ý rằng nhiều toán tử có thể được sử dụng trong một biểu thức.

Ví dụ:

x = y * 10 + z - 5 / 4

4. Toán tử gán tăng thêm

Trong phần trước chúng ta đã xem toán tử gán cơ bản (=). Kotlin cung cấp một số toán tử được thiết kế để kết hợp một bài tập với một phép toán hoặc logic. Chúng chủ yếu được sử dụng khi thực hiện trong đó kết quả sẽ được lưu trữ trong một trong các toán hạng. Ví dụ, người ta có thể viết một biểu thức như sau:

x = x + y

Biểu thức trên cộng giá trị của x và y rồi lưu kết quả vào biến x. Điều này có thể được đơn giản hóa bằng cách sử dụng toán tử gán tăng thêm:

x += y

Biểu thức trên thực hiện chính xác nhiệm vụ tương tự như x = x + y nhưng tiết kiệm cho người lập trình một số cách gõ.
Nhiều toán tử gán có sẵn trong Kotlin. Việc sử dụng thường xuyên nhất được nêu trong bảng sau:

Toán tử Diễn giải
x += y tính tổng của x và y rồi được lưu vào x
x -= y tính hiệu của x và y rồi được lưu vào x
x *= y tính tích của x và y rồi được lưu vào x
x /= y tính tdương của x chia y rồi được lưu vào x
x %= y tính dư của x chia được lưu vào biến x

5. Tăng giảm toán tử

Có một cách ngắn hơn để sử dụng các toán tử tăng và giảm Kotlin. Hãy xem xét đoạn code dưới đây:

x = x + 1 // tăng giá trị của biến x lên 1
x = x - 1 // giảm giá trị của biến x đi 1

Các biểu thức này tăng và giảm giá trị của x thêm 1. Tuy nhiên, thay vì sử dụng phương pháp này, việc sử dụng các toán tử ++ và -- sẽ nhanh hơn. Các ví dụ sau đây thực hiện chính xác các nhiệm vụ giống như các ví dụ trên:

x++ // tăng x lên 1 giá trị
x-- // giảm x đi 1 giá trị

Các toán tử này có thể được đặt trước hoặc sau tên biến. Nếu toán tử được đặt trước tên biến, thao tác tăng hoặc giảm được thực hiện trước khi bất kỳ thao tác nào khác được thực hiện trên biến. Ví dụ: trong đoạn mã sau, x được tăng trước khi được gán cho y, cho nên y sẽ có giá trị là 10:

var x = 9
val y = ++x

Tuy nhiên, trong ví dụ tiếp theo, giá trị của x (9) được gán cho biến y trước khi thực hiện giảm dần. Sau khi biểu thức được ước tính, giá trị của y sẽ là 9 và giá trị của x sẽ là 8.

var x = 9
val y = x--

Kotlin cũng bao gồm một tập hợp các toán tử logic hữu ích để thực hiện so sánh. Các toán tử này đều trả về kết quả Boolean tùy thuộc vào kết quả so sánh. Các toán tử này là các toán tử nhị phân ở chỗ chúng làm việc với hai toán hạng. Các toán tử đẳng thức được sử dụng thường xuyên nhất trong việc xây dựng logic điều khiển luồng chương trình. Ví dụ: một câu lệnh if có thể được xây dựng dựa trên việc một giá trị có khớp với một giá trị khác hay không:

if x == y {
      // Perform task
}

Kết quả so sánh cũng có thể được lưu trữ trong biến Boolean. Ví dụ: đoạn code sau sẽ trả về true được lưu trữ trong kết quả biến: var result: Bool

val x = 10
val y = 20
 
result = x < y

Rõ ràng 10 nhỏ hơn 20, cho nên kết quả x < y là đúng. Bảng sau liệt kê toàn bộ toán tử so sánh Kotlin:

Operator Description
x == y return true nếu giá trị x đúng bằng giá trị của y
x > y return true nếu giá trị x lớn hơn giá trị của y
x >= y return true nếu giá trị x lớn hơn hoặc bằng giá trị của y
x < y return true nếu giá trị x nhỏ hơn giá trị của y
x <= y return true nếu giá trị x nhỏ hơn hoặc bằng giá trị của y
x != y return true nếu giá trị x không bằng giá trị của y

6. Toán tử logic Boolean

Kotlin cũng cung cấp một tập hợp các toán tử logic được gọi là được thiết kế để trả về giá trị đúng hoặc sai của Boolean. Các toán tử này đều trả về kết quả Boolean và lấy giá trị Boolean làm toán hạng. Các toán tử chính là NOT (!), AND (&&) và OR (||).Toán tử NOT (!)
Chỉ đơn giản là đảo ngược giá trị hiện tại của biến Boolean hoặc kết quả của một biểu thức. Ví dụ: nếu một biến có giá trị là true, thì tiền tố của biến có ký tự ‘!'. Sẽ đảo ngược giá trị thành false:

val flag = true // variable is true
val secondFlag = !flag // secondFlag set to false

Toán tử OR (||) trả về true nếu một trong hai toán hạng của nó ước lượng là true, nếu không thì nó trả về false. Ví dụ: đoạn code sau có giá trị là True vì ít nhất một trong các biểu thức ở hai bên của toán tử OR là có giá trị là True:

if ((10 < 20) || (20 < 10)) {
        print("Expression is true")
}
<pre>

The AND (&&) operator returns true only if both operands evaluate to be true. The following example will return false because only one of the two operand expressions evaluates to true:

<pre>
if ((10 < 20) && (20 < 10)) {
      print("Expression is true")
}

7. Toán tử dải

Kotlin bao gồm một toán tử hữu ích cho phép khai báo một loạt các giá trị. Như sẽ thấy trong các chương sau,ta sẽ thấy tầm quan trọng của toán tử này khi làm việc với vòng lặp trong logic chương trình. Cú pháp của toán tử dải như sau:

x..y

Toán tử này biểu thị phạm vi số bắt đầu từ x và kết thúc tại y trong đó cả x và y được bao gồm trong phạm vi (được gọi là phạm vi đóng). Toán tử phạm vi 5..8, ví dụ, chỉ định các số 5, 6, 7 và 8.

Bitwise Operators -phép toán thao tác Bit

Như đã thảo luận trước đây, bộ xử lý máy tính làm việc trong hệ nhị phân. Đây thực chất là các luồng của 1 và 0, mỗi số được gọi là một bit. Các bit được tạo thành các nhóm 8 để tạo thành byte. Như vậy, không có gì đáng ngạc nhiên khi chúng ta, với tư cách là lập trình viên, đôi khi sẽ kết thúc làm việc ở cấp độ này trong code của chúng ta. Để tạo điều kiện cho yêu cầu này, Kotlin cung cấp một loạt các toán tử bit.

Những người quen thuộc với các toán tử bitwise trong các ngôn ngữ khác như C, C ++, C #, Objective-C và Java sẽ không tìm thấy gì mới trong lĩnh vực cú pháp ngôn ngữ Kotlin này. Đối với những người không quen thuộc với số nhị phân, bây giờ có thể là thời điểm tốt để tìm kiếm các tài liệu tham khảo về chủ đề này để hiểu cách các số và số 0 được tạo thành các byte để tạo thành số. Các tác giả khác đã thực hiện một công việc mô tả chủ đề tốt hơn nhiều so với chúng ta có thể làm trong phạm vi của cuốn sách này.

Đối với mục đích của bài tập này, chúng ta sẽ làm việc với biểu diễn nhị phân của hai số. Đầu tiên, số thập phân 171 được biểu thị dưới dạng nhị phân là:

10101011

Thứ hai, số 3 được thể hiện bằng chuỗi nhị phân sau:

00000011

Bây giờ chúng ta có hai số nhị phân để làm việc, chúng ta có thể bắt đầu xem xét các toán tử bitwise của Kotlin:

8. Bitwise Inversion

Phủ định Bitwise (còn được gọi là NOT) được thực hiện bằng cách sử dụng thao tác inv () và có tác dụng phủ định tất cả các bit trong một số. Nói cách khác, tất cả số 0 trở thành số 1 và tất cả số 1 trở thành số 0. Lấy ví dụ 3 số của chúng tôi, hoạt động Bitwise NOT có kết quả như sau:

00000011 NOT
========
11111100

Do đó, đoạn code Kotlin sau đây có giá trị -4:

val y = 3
val z = y.inv()
 
print("Result is $z")

9. Bitwise AND

Bitwise AND được thực hiện bằng thao tác and (). Nó tạo 1 bit bằng cách so sánh hai số. Bất kỳ vị trí tương ứng trong chuỗi nhị phân của mỗi số trong đó cả hai bit là 1 thì kết quả là 1. Nếu một trong hai vị trí bit chứa 0 thì kết quả là 0 . Lấy hai số ví dụ của chúng tôi, điều này sẽ xuất hiện như sau:

10101011 AND
00000011
========
00000011

Như chúng ta có thể thấy, các vị trí duy nhất mà cả hai số có 1 là hai vị trí cuối cùng. Do đó, nếu chúng tôi thực hiện điều này trong mã Kotlin, chúng tôi sẽ thấy rằng kết quả là 3 (00000011):

val x = 171
val y = 3
val z = x.and(y)
 
print("Result is $z")

10. Bitwise OR

Bitwise OR cũng thực hiện so sánh từng bit của hai chuỗi nhị phân. Không giống như hoạt động AND,khi thực hiện OR trên một cặp bit nó trả về một nếu một trong các bit là 1 ngược lại nó trả về 0 . Sử dụng số ví dụ của chúng tôi, kết quả sẽ như sau:

10101011 OR
00000011
========
10101011

Nếu chúng ta thực hiện thao tác này trong Kotlin bằng cách sử dụng OR(), kết quả sẽ là 171:

val x = 171
val y = 3
val z = x.or(y)
 
print("Result is $z")

11. Bitwise XOR

khi thực hiện OR trên một cặp bit nó trả về 1 nếu các bit khác nhau, ngược lại nó trả về 0.

10101011 XOR
00000011
========
10101000

Kết quả trong trường hợp này là 10101000 chuyển thành 168 ở dạng thập phân. Để xác minh điều này, chúng ta có thể, một lần nữa, hãy thử một số mã Kotlin:

val x = 171
val y = 3
val z = x.xor(y)
 
print("Result is $z")

Khi được thực thi, chúng ta sẽ nhận được kết quả như sau:

Result is 168

Cùng chuyên mục:

Hàm Lambda trong Kotlin

Hàm Lambda trong Kotlin

Hàm Lambda còn được gọi là hàm ẩn danh vì nó không có tên.

Tham số function trong Kotlin

Tham số function trong Kotlin

Trong bài viết này chúng ta sẽ tìm hiểu tham số mặc định và cách…

Đệ quy trong Kotlin

Đệ quy trong Kotlin

Ở bài trước chúng ta đã học xong cách tạo function, vậy thì trong bài…

Function trong Kotlin

Function trong Kotlin

Trong bài này chúng ta sẽ học một khái niệm mới, đó là function trong…

Lệnh break trong Kotlin

Lệnh break trong Kotlin

Trong bài này chúng ta sẽ tìm hiểu lệnh break trong Kotlin

Lệnh continue trong Kotlin

Lệnh continue trong Kotlin

Trong bài này chúng ta sẽ học lệnh continue trong Kotlin,

Vòng lặp do-while trong Kotlin

Vòng lặp do-while trong Kotlin

Vòng lặp While trong Kotlin

Vòng lặp While trong Kotlin

Vòng lặp For trong Kotlin

Vòng lặp For trong Kotlin

Trong bài này chúng ta sẽ tìm hiểu về vòng lặp For

Lệnh When trong Kotlin

Lệnh When trong Kotlin

Trong bài này chúng ta sẽ học lệnh When trong Kotlin

Lệnh if .. else trong Kotlin

Lệnh if .. else trong Kotlin

Trong bất kỳ ngôn ngữ lập trình nào, chúng ta cần các câu lệnh điều…

Ranges trong Kotlin

Ranges trong Kotlin

Trong bài viết này, chúng ta sẽ tìm hiểu về tính năng rất hay của…

Mảng (Array) trong Kotlin

Mảng (Array) trong Kotlin

Trong bài này chúng ta sẽ tìm hiểu một kiểu dữ liệu rất quan trọng…

Thao tác với chuỗi trong Kotlin

Thao tác với chuỗi trong Kotlin

Trong bài này chúng ta sẽ tìm hiểu cách khai báo và xử lý chuỗi…

Ghi chú (comment) trong Kotlin

Ghi chú (comment) trong Kotlin

Kotlin - Lấy dữ liệu bằng hàm readLine()

Kotlin - Lấy dữ liệu bằng hàm readLine()

Trong bài viết này, chúng ta sẽ xem cách lấy Input(đầu vào) từ người dùng(User)…

Kotlin - Type Casting - chuyển đổi kiểu dữ liệu

Kotlin - Type Casting - chuyển đổi kiểu dữ liệu

Type Casting là quá trình chuyển đổi từ loại dữ liệu sang loại dữ liệu…

Biến và Kiểu dữ liệu trong Kotlin

Biến và Kiểu dữ liệu trong Kotlin

Kotlin Keywords, Soft Keywords và Identifiers

Kotlin Keywords, Soft Keywords và Identifiers

Có một số từ nhất định trong Kotlin có ý nghĩa đặc biệt và không…

Chương trình Kotlin đầu tiên - Hello world

Chương trình Kotlin đầu tiên - Hello world

Chúng ta hãy cũng viết một chương trình Kotlin đơn giản để hiển thị thông…

Top