Đoạn mã nào sau đây in ra màn hình chữ "Equal":
Trả lời:
Đáp án đúng: D
Phương án A đúng vì trong Java, khi so sánh một số nguyên `int` với một số thực `float` bằng toán tử `==`, Java sẽ tự động chuyển đổi số nguyên về kiểu `float` trước khi so sánh. Trong trường hợp này, `x` (100) sẽ được chuyển thành `100.0` (kiểu float), và do đó `x == y` sẽ trả về `true`, dẫn đến việc in ra "Equal".
Phương án B sai vì `Integer` là một lớp wrapper cho kiểu `int`. Khi so sánh hai đối tượng `Integer` bằng toán tử `==`, ta thực chất so sánh địa chỉ của hai đối tượng trong bộ nhớ, chứ không phải giá trị của chúng. Trong trường hợp này, `x` và `y` là hai đối tượng khác nhau, do đó `x == y` sẽ trả về `false` mặc dù giá trị của chúng bằng nhau. Để so sánh giá trị của hai đối tượng `Integer`, ta nên sử dụng phương thức `.equals()`.
Phương án C sai vì tương tự như phương án B, `String` là một lớp. Khi so sánh hai đối tượng `String` bằng toán tử `==`, ta đang so sánh địa chỉ của chúng trong bộ nhớ. Trong trường hợp này, mặc dù giá trị của `x` và `y` giống nhau ("100"), chúng có thể là hai đối tượng khác nhau trong bộ nhớ (đặc biệt nếu chúng được tạo ra bằng `new String("100")`). Do đó, `x == y` có thể trả về `false`. Để so sánh nội dung của hai chuỗi, ta nên sử dụng phương thức `.equals()`.
Vì chỉ có phương án A đúng, nên phương án D sai.