Biểu thức là gì?

Biểu thức là một loại câu lệnh đặc biệt đánh giá một giá trị. Mọi biểu thức đều bao gồm:

  • Toán hạng operand- đại diện cho dữ liệu (các biến số, hằng số, giá trị)
  • Toán tử operator - dùng để xác định cách mà các toán hạng sẽ được xử lý để trả về giá trị.

Ví dụ, chúng ta xét biểu thức sau

2 + 3 - n;

Trong biểu thức này, 2 , 35 là các toán hạng còn ký hiệu + (cộng) và - là các toán tử.

Các loại toán tử trong Dart

Trong Dart có các loại toán tử sau

  • Toán tử số học (Arithmetic Operators)

  • Các toán tử so sánh và quan hệ (Equality and Relational Operators)
  • Kiểm tra kiểu (Type test Operators)
  • Toán tử Bitwise (Bitwise Operators)
  • Toán tử gán giá trị (Assignment Operators)
  • Toán tử logic (Logical Operators)

Toán tử số học

Toán tử Ý nghĩa
+ Toán tử cộng, ví dụ 17 + 3 cho kết quả 20
- Toán tử trừ, ví dụ 17 - 3 cho kết quả 14.
* Toán tử nhân, , ví dụ 17 * 3 cho kết quả 51
/ Toán tử chia, , ví dụ 17 / 3 cho kết quả 5.666666666666667
~/ Chia lấy phần nguyên, ví dụ 17 ~/ 3 cho kết quả 5
% Chia lấy phần dư, ví dụ 17 % 3 cho kết quả 2
++ Toán tử tăng thêm một đơn vị, ví dụ 17++ cho kết quả 18
-- Toán tử giảm đi một đơn vị, ví dụ 17-- cho kết quả 16

Các toán tử so sánh

Toán tử so sánh kiểm tra hoặc xác định loại mối quan hệ giữa hai đối tượng. Các toán tử quan hệ trả về một giá trị Boolean tức là true hoặc false.

Ở các ví dụ dưới đây, giả sử giá trị của A là 5B20.

Toán tử Ý nghĩa Ví dụ
> Lớn hơn (A > B)false
< Nhỏ hơn (A < B)true
>= Lớn hơn hoặc bằng (A >= B)false
<= Nhỏ hơn hoặc bằng (A <= B)true
== Bằng nhau (A == B)false
!= Không bằng nhau (A! = B)true

Toán tử kiểm tra kiểu

Các toán tử này rất tiện lợi để kiểm tra các loại trong thời gian chạy.

Toán tử Ýnghĩa Ví dụ
is Trả về true nếu nếu đối tượng có kiểu được chỉ định 5 is int trả về true
is! Trả về false nếu đối tượng có kiểu được chỉ định '5' is! String trả về false

Toán tử Bitwise

Bảng sau liệt kê các toán tử bitwise có sẵn trong Dart và vai trò của chúng:

Toán tử Ý nghĩa
a & b Trả về 1 ở mỗi vị trí mà các bit tương ứng của cả hai toán hạng là 1.
a | b Trả về 1 ở mỗi vị trí mà các bit tương ứng của một trong hai toán hạng là 1.
a ^ b Trả về 1 ở mỗi vị trí mà các bit tương ứng của một trong hai nhưng không phải cả hai toán hạng đều là 1.
~ a Đảo ngược các bit của toán hạng.
a<<b Dịch chuyển a trong biểu diễn nhị phân sang bên trái b bit (b<32), dịch chuyển theo số 0 từ bên phải.
a>>b Dịch chuyển a trong biểu diễn nhị phân sang phải b bit (b<32), loại bỏ các bit bị dịch chuyển.

Để chuyển một số nguyên a ở hệ thập phân sang hệ nhị phân, chúng ta dùng hàm a.toRadixString(2). Bạn có thể thay số 2 bằng các cơ số khác như 8 hoặc 16.

void main() {
  int a = 318;
  int b = 459;
//   Viết a dưới dạng nhị phân
  print(a.toRadixString(2)); //Kết quả 100111110
//   Viết b dưới dạng nhị phân
  print(b.toRadixString(2)); //Kết quả 111001011
  print((a & b).toRadixString(2)); //Kết quả 100001010
  print((a | b).toRadixString(2)); //Kết quả 111111111
  print((a ^ b).toRadixString(2)); //Kết quả 11110101
  print((~a).toRadixString(2)); //Kết quả 11111111111111111111111011000001
  print((a << 3).toRadixString(2)); //Kết quả 100111110000
  print((a >> 4).toRadixString(2)); //Kết quả 10011
}

Các phép tính bitwise được hỗ trợ trực tiếp bởi bộ xử lý (processor) của máy tính nên nó thực hiện rất nhanh.

Toán tử gán giá trị

Toán tử Ý nghĩa Ví dụ
= Gán giá trị từ toán hạng bên phải cho toán hạng bên trái. C = A + B gán giá trị của A + B vào C
??= Chỉ gán giá trị nếu biến đang là null  
+= Thêm toán hạng bên phải vào toán hạng bên trái và gán kết quả cho toán hạng bên trái. C += A tương đương với C = C + A
-= Trừ toán hạng bên phải khỏi toán hạng bên trái và gán kết quả cho toán hạng bên trái. C -= A tương đương với C = C - A
*= Nhân toán hạng bên phải với toán hạng bên trái và gán kết quả cho toán hạng bên trái. C *= A tương đương với C = C*A
/= Chia toán hạng bên trái với toán hạng bên phải và gán kết quả cho toán hạng bên trái. C /= A tương đương với C = C/A

Toán tử logic

Toán tử logic được sử dụng để kết hợp hai hoặc nhiều điều kiện. Các toán tử logic trả về một giá trị Boolean. Giả sử giá trị của biến A là 10B20.

Toán tử Ý nghĩa Ví dụ
&& Toán tử AND (và) chỉ trả về true nếu tất cả các biểu thức là true (A>10 && B>10)false
|| Toán tử OR (hoặc) trả về true nếu ít nhất một trong các biểu thức là true (A>10 || B>10)true
! Toán tử NOT (phủ định) trả về giá trị ngược lại của biểu thức. !(A>50)true

toan tu bool trong Python Boolean trong Dart

Biểu thức có điều kiện

(điều kiện) ? expr1 : expr2

Nếu điều kiện là đúng, thì nó thực hiện và trả về kết quả của biểu thức expr1, điều kiện sai thì nó thực hiện và trả về giá trị của biểu thức expr2.

void main() { 
   var a = 10; 
   var result = (a > 12) ? "gia tri lon hon 12" : "gia tri nho hon hoac bang 12"; 
   print(result); 
} 

Ta thu được kết quả sau:

gia tri nho hon hoac bang 12

expr1 ?? expr2

Nếu biểu thức expr1 khác null thì trả về giá trị của nó; ngược lại thì thực hiện và trả về giá trị của biểu thức expr2

void main() { 
   var a = null; 
   var b = 12; 
   var result = a ?? b; 
   print(result); 
}

Ta thu được kết quả sau:

12