Toán tử ba ngõ (ternary operator) trong Java cho phép bạn viết câu lệnh if trên một dòng mã. Toán tử này đánh giá thành true hoặc false và trả về giá trị cụ thể tùy thuộc vào kết quả đánh giá.
Chúng ta sử dụng câu lệnh if...else trong Java để kiểm soát luồng chương trình. Câu lệnh if đánh giá xem một biểu thức có đúng hay sai. Câu lệnh này thực thi một khối mã cụ thể nếu biểu thức bằng true.
Tuy nhiên, câu lệnh if...else trải dài trên nhiều dòng. Nếu bạn đang đánh giá một biểu thức cơ bản, cú pháp có thể trở nên rườm rà không cần thiết. Đó là lúc toán tử ba ngõ xuất hiện. Toán tử ba ngõ trong Java được dùng để thay thế các câu lệnh if...else đơn giản, giúp mã nguồn dễ đọc hơn.
Hướng dẫn này sẽ thảo luận cách sử dụng toán tử ba ngõ trong Java. Chúng ta sẽ đi qua một ví dụ để bạn học cách sử dụng toán tử này. Hãy bắt đầu!
Toán Tử Ba Ngõ Trong Java
Toán tử ba ngõ trong Java cho phép bạn viết các câu lệnh if...else ngắn gọn. Câu lệnh ba ngõ lấy tên từ việc chúng nhận ba điều kiện. Toán tử ba ngõ đánh giá xem một câu lệnh có đúng hay sai và trả về giá trị được chỉ định tùy thuộc vào kết quả.
Cú pháp cho toán tử ba ngõ trong Java:
variable = (expression) ? expressionIsTrue : expressionIsFalse;
Nguồn gốc tên "ternary" (ba ngõ) ám chỉ việc toán tử này có ba phần. Câu lệnh nhận ba toán hạng:
- expression là biểu thức cần đánh giá
- expressionIsTrue là giá trị gán cho variable nếu biểu thức đúng
- expressionIsFalse là giá trị gán cho variable nếu biểu thức sai
Bạn không cần gán kết quả của toán tử ba ngõ cho một biến. Ví dụ, bạn có thể viết toán tử ba ngõ trong câu lệnh System.out.println(). Điều này cho phép bạn thấy kết quả của toán tử ba ngõ trên bảng điều khiển Java.
Khác với câu lệnh "if", toán tử ba ngõ không chấp nhận từ khóa "else". Câu lệnh ba ngõ sử dụng dấu hai chấm (:) để biểu diễn điều kiện "else".
Hãy dùng một ví dụ để minh họa toán tử này.
Ví Dụ Toán Tử Ba Ngõ Trong Java
Giả sử chúng ta đang xây dựng một trang web thương mại điện tử. Chúng ta chỉ cho phép mọi người mua sản phẩm nếu họ từ 16 tuổi trở lên.
Để xác thực tuổi khách hàng, chúng ta có thể dùng toán tử ba ngõ. Cách này hiệu quả hơn dùng câu lệnh "if" vì người dùng chỉ có thể dưới 16 tuổi hoặc từ 16 tuổi trở lên. Dưới đây là chương trình ví dụ:
public class EvaluateAge {
public static void main(String[] args) {
int age = 22;
String result = (age >= 16) ? "This user is over 16." : "This user is under 16.";
System.out.println(result);
}
}
Mã đánh giá toán tử ba ngõ. Điều kiện đúng nên kết quả trả về:
This user is over 16.
Đầu tiên, định nghĩa lớp EvaluateAge. Sau đó khai báo biến age lưu tuổi khách hàng. age được gán giá trị 22.
Khai báo biến "result" có giá trị bằng kết quả của toán tử ba ngõ. Toán tử đánh giá xem "age" của người dùng có lớn hơn hoặc bằng 16 ("age >= 16").
Nếu biểu thức đánh giá thành true, toán tử trả về "This user is over 16.". Ngược lại, trả về "This user is under 16.". Trên dòng cuối, in ra thông báo được trả về bởi biến result.
Nếu tuổi người dùng bằng 15, mã sẽ trả về:
This user is under 16.
Điều này xảy ra vì toán tử ba ngõ đánh giá thành false nếu tuổi không lớn hơn hoặc bằng 16. Chúng ta đã xây dựng thành công hệ thống kiểm tra độ tuổi.
Khi Nào Nên Dùng Toán Tử Ba Ngõ Trong Java
Toán tử ba ngõ nên dùng khi bạn có một câu lệnh "if" đơn giản muốn xuất hiện ngắn gọn hơn trong mã. Toán tử ba ngõ làm cho mã dễ đọc hơn.
Trong ví dụ trên, chúng ta đánh giá một biểu thức. Nếu viết toàn bộ mã để kiểm tra tuổi như một câu lệnh "if" đầy đủ, chúng ta sẽ viết:
if (age >= 16) {
String result = "This user is over 16."
} else {
String result = "This user is under 16."
}
Câu lệnh if này đơn giản nhưng trải dài năm dòng. Bằng cách dùng câu lệnh ba ngõ, chúng ta rút gọn câu lệnh if xuống một dòng.
Tóm lại, chỉ nên dùng câu lệnh ba ngõ khi câu lệnh kết quả ngắn gọn. Nếu không, hãy viết câu lệnh if bình thường. Mục đích của toán tử ba ngõ là làm cho mã ngắn gọn và dễ đọc. Đưa một câu lệnh if phức tạp vào toán tử ba ngõ đi ngược lại mục tiêu đó.
Cả toán tử ba ngõ và câu lệnh if trong Java đều đánh giá các biểu thức Boolean. Biểu thức Boolean là những biểu thức chỉ có kết quả true hoặc false. Để tìm hiểu thêm về Boolean trong Java, hãy đọc hướng dẫn hoàn chỉnh về Java Booleans.
Kết Luận
Toán tử ba ngõ là tính năng trong Java cho phép viết các câu lệnh if ngắn gọn hơn để kiểm soát luồng mã. Các toán tử này được gọi là ternary (ba ngõ) vì chúng chấp nhận ba toán hạng.
Trong hướng dẫn này, chúng ta đã trình bày cơ bản về toán tử ba ngõ Java. Chúng ta cũng khám phá cách so sánh toán tử ba ngõ với câu lệnh if trong Java, cùng với ví dụ cho từng trường hợp.
Bạn muốn tìm hiểu thêm về lập trình Java? Hãy xem hướng dẫn hoàn chỉnh How to Learn Java. Bạn sẽ tìm thấy danh sách các khóa học trực tuyến hàng đầu cũng như lời khuyên chuyên gia về học ngôn ngữ lập trình Java.