Hiểu Rõ Về “&” vs “&&” Trong Java

Trong thế giới lập trình Java, sự khác biệt giữa “&” và “&&” tuy nhỏ nhưng lại có võ. Cả hai đều là toán tử logic, nhưng chúng hoạt động khác nhau và được sử dụng trong các ngữ cảnh riêng biệt. Bài viết này sẽ giúp bạn phân biệt rõ ràng hai toán tử này, từ đó sử dụng chúng một cách hiệu quả và tránh những lỗi tiềm ẩn trong code Java.

“&” – Toán tử AND bit và AND logic

Toán tử “&” có hai chức năng chính trong Java:

  1. AND bit (Bitwise AND): Thực hiện phép toán AND trên từng bit tương ứng của hai toán hạng. Nếu cả hai bit đều là 1, kết quả là 1; ngược lại kết quả là 0.
  2. AND logic (Logical AND): Kiểm tra xem cả hai toán hạng có cùng là true hay không. Nếu đúng, kết quả là true; ngược lại kết quả là false.

Ví dụ:

int a = 5; // 0101 (binary)
int b = 3; // 0011 (binary)

int c = a & b; // 0001 (binary) -> c = 1 (decimal)

boolean x = true;
boolean y = false;

boolean z = x & y; // z = false

“&&” – Toán tử AND logic rút gọn

Tương tự như “&”, “&&” cũng kiểm tra xem cả hai toán hạng có cùng là true hay không. Tuy nhiên, điểm khác biệt chính là “&&” sử dụng đánh giá ngắn mạch (short-circuiting).

Cụ thể, nếu toán hạng bên trái của “&&” là false, toán hạng bên phải sẽ không được đánh giá. Điều này giúp tiết kiệm thời gian xử lý và tránh các lỗi tiềm ẩn, đặc biệt khi toán hạng bên phải là một biểu thức phức tạp hoặc có tác dụng phụ.

Ví dụ:

int a = 0;

boolean result = (a != 0) && (10 / a == 2); // a != 0 là false, toán hạng thứ hai không được đánh giá

Trong trường hợp này, nếu sử dụng “&” thay cho “&&”, chương trình sẽ gặp lỗi ArithmeticException do chia cho 0.

Bảng So Sánh “&” vs “&&”

Tiêu chí “&” “&&”
Chức năng AND bit và AND logic AND logic rút gọn
Đánh giá ngắn mạch Không
Hiệu suất Thường chậm hơn Thường nhanh hơn
Sử dụng – Thao tác bit – Trường hợp cần đánh giá cả hai toán hạng – Kiểm tra điều kiện logic – Nâng cao hiệu suất và tránh lỗi

Khi nào nên sử dụng “&” và “&&”?

  • Sử dụng “&&” khi bạn muốn kiểm tra điều kiện logic và chỉ cần toán hạng bên phải được đánh giá nếu toán hạng bên trái là true.
  • Sử dụng “&” khi bạn muốn thực hiện phép toán AND bit hoặc khi bạn cần cả hai toán hạng luôn được đánh giá.

Hiểu rõ sự khác biệt giữa “&” và “&&” trong Java là rất quan trọng để viết code hiệu quả và tránh lỗi. Bằng cách chọn đúng toán tử cho từng trường hợp cụ thể, bạn có thể nâng cao chất lượng code và tối ưu hóa hiệu suất chương trình của mình.