1. Kiểu dữ liệu logic: boolean
Như chúng ta đã thấy, trong Java có một toán tử rất hữu ích — if-else. Nó thực thi một khối lệnh nếu điều kiện trong ngoặc là đúng và thực thi khối lệnh khác nếu điều kiện là sai.
Để làm việc thuận tiện với các biểu thức có thể đúng hoặc sai, Java bổ sung một kiểu đặc biệt — boolean. Đặc điểm chính của nó là biến thuộc kiểu này chỉ có thể nhận đúng hai giá trị: true (đúng) và false (sai).
Không thể gán các giá trị nào khác cho biến kiểu boolean. Trình biên dịch sẽ không cho phép.
Ví dụ về biến kiểu boolean:
boolean isAdult = true;
boolean hasMoney = false;
Biến kiểu boolean chỉ có hai giá trị — true và false. Hết! Gần giống như một bài kiểm thử — hoặc “đậu”, hoặc “rớt”.
2. Các toán tử so sánh
Vậy kiểu nguyên thủy này để làm gì? Sức mạnh thực sự của boolean thể hiện khi chúng ta xây dựng biểu thức logic. Thông thường chúng được tạo bằng các toán tử so sánh.
| Toán tử | Chức năng | Ví dụ | Giá trị |
|---|---|---|---|
| == | Bằng | |
true hoặc false |
| != | Khác | |
true hoặc false |
| > | Lớn hơn | |
true hoặc false |
| < | Nhỏ hơn | |
true hoặc false |
| >= | Lớn hơn hoặc bằng | |
true hoặc false |
| <= | Nhỏ hơn hoặc bằng | |
true hoặc false |
Ví dụ:
int age = 20;
boolean isAdult = age >= 18; // true (20 lớn hơn hoặc bằng 18)
boolean isTeenager = age >= 13 && age < 18; // false (20 không nhỏ hơn 18)
boolean isEven = age % 2 == 0; // true (20 chia hết cho 2)
isAdult ở đây sẽ là true, bởi vì 20 thực sự là độ tuổi “trưởng thành”.
Điểm quan trọng 1:
Không được tách rời các toán tử gồm hai ký tự.
a < = 10
speed > = max
age = = 18
time ! = 0
Điểm quan trọng 2:
Lưu ý rằng không có các toán tử => và =<: chỉ có <= và >=. Nếu bạn viết a =< 3, mã của bạn sẽ không thể biên dịch.
Điểm quan trọng 3:
Trong Java bạn không thể viết biểu thức dạng 18 < age < 65. Bởi vì biểu thức 18 < age sẽ cho ra true hoặc false. Và so sánh true với một số (65) là không thể — kiểu khác nhau.
3. Các phép toán logic
Trong Java không thể viết biểu thức 18 < age < 65 — nó sẽ sai cú pháp và chương trình sẽ không biên dịch.
Nhưng có thể viết như sau:
(18 < age) I (age < 65)
Dĩ nhiên, thay vì từ và ta sử dụng các toán tử logic. Trong Java có ba toán tử logic: AND (và), OR (hoặc) và NOT (không).
Tin vui: dùng dấu ngoặc, bạn có thể xây dựng các biểu thức logic với độ phức tạp bất kỳ.
Tin buồn: trong Java, thay vì các từ and, or và not là các ký hiệu theo họ C: &&, ||, !.
| Toán tử logic | Kỳ vọng | Thực tế |
|---|---|---|
| VÀ (∧) | and | && |
| HOẶC (∨) | or | || |
| KHÔNG (¬) | not | ! |
Một vài ví dụ sử dụng các toán tử logic trong Java:
| Biểu thức | Diễn giải | Giải thích |
|---|---|---|
|
(0 < a) and (a < 100) | (0 < a) VÀ (a < 100) |
|
(not a) and (not b) | (KHÔNG a) VÀ (KHÔNG b) |
|
not((not a) or (not b)) | KHÔNG((KHÔNG a) HOẶC (KHÔNG b)) |
4. Bảng chân trị
Cùng điểm nhanh qua các phép toán logic.
Toán tử AND
Toán tử AND, còn gọi là VÀ, ký hiệu &&, còn gọi là phép hội (conjunction), hay phép nhân logic.
| Biểu thức | Kết quả |
|---|---|
| true && true | true |
| true && false | false |
| false && true | false |
| false && false | false |
Toán tử OR
Toán tử OR, còn gọi là HOẶC, ký hiệu ||, còn gọi là phép tuyển (disjunction), hay phép cộng logic.
| Biểu thức | Kết quả |
|---|---|
| true || true | true |
| true || false | true |
| false || true | true |
| false || false | false |
Toán tử NOT
Toán tử NOT, còn gọi là KHÔNG, ký hiệu !, còn gọi là phép phủ định.
| Biểu thức | Kết quả |
|---|---|
| ! true | false |
| ! false | true |
Các biểu thức hữu ích:
| Biểu thức | Kết quả |
|---|---|
| m && !m | false |
| m || !m | true |
| !(a && b) | !a || !b |
| !(a || b) | !a && !b |
5. Ví dụ về các phép toán logic: and, or, not
Phép “VÀ”, AND, ký hiệu &&
Kết quả là đúng chỉ khi cả hai điều kiện đều đúng.
int age = 16;
boolean hasTicket = true;
boolean canAttend = age >= 14 && hasTicket; // true (16 lớn hơn 14 VÀ có vé)
Nếu bạn từ 14 tuổi VÀ có vé — mời vào!
Phép “HOẶC”, OR, ký hiệu (||)
Kết quả là đúng nếu ít nhất một điều kiện đúng.
boolean isAdmin = false;
boolean isModerator = true;
boolean canEdit = isAdmin || isModerator; // true (có thể chỉnh sửa nếu ít nhất một trong số đó là true)
Nếu bạn là quản trị viên HOẶC người kiểm duyệt — cứ thoải mái bấm nút!
Phép “KHÔNG”, NOT, ký hiệu (!)
Toán tử phủ định biến đúng thành sai và ngược lại.
boolean isWeekend = false;
boolean shouldGoToWork = !isWeekend; // true (nếu không phải cuối tuần thì làm việc)
Nếu KHÔNG phải cuối tuần — đến lúc dậy!
Kết hợp: xây dựng điều kiện với độ phức tạp tùy ý
Bạn có thể kết hợp bao nhiêu phép toán logic tùy thích (tốt nhất đừng lạm dụng). Có thể (và nên!) dùng dấu ngoặc để rõ ràng.
Ví dụ:
int age = 17;
boolean hasTicket = false;
boolean isVip = true;
boolean canGo = (age >= 18 && hasTicket) || isVip; // true, vì isVip = true
Logic: nếu người đó đủ 18 tuổi và có vé, hoặc nếu là VIP — cho vào. Nếu không phải VIP — chỉ cho vào khi vừa là người lớn vừa có vé.
GO TO FULL VERSION