Đọc đoạn mã sau:
11: int x = 3;
12: int y = 1;
13: if (x = y) {
14: System.out.println("x = " + x);
15: }
Kết quả in ra của đoạn mã trên là gì?
Trả lời:
Đáp án đúng: C
Đoạn mã trên chứa một lỗi cú pháp quan trọng trong câu lệnh `if (x = y)`. Trong Java, `=` là toán tử gán, không phải toán tử so sánh bằng (`==`).
Quá trình thực thi sẽ diễn ra như sau:
1. `int x = 3;` Khai báo và khởi tạo biến `x` với giá trị 3.
2. `int y = 1;` Khai báo và khởi tạo biến `y` với giá trị 1.
3. `if (x = y)`: Biểu thức này thực hiện gán giá trị của `y` (là 1) cho `x`. Sau phép gán, giá trị của `x` sẽ là 1. Trong Java, biểu thức gán trả về giá trị được gán, tức là biểu thức `x = y` trả về giá trị 1.
4. Vì Java không cho phép dùng số nguyên làm điều kiện trực tiếp trong `if`, mà điều kiện phải là `boolean`, nên trình biên dịch sẽ báo lỗi: "incompatible types: int cannot be converted to boolean".
Vì vậy, chương trình sẽ không biên dịch được.