JavaScript is required

Biểu thức nào sau đây hợp lệ

A.

String x = "Hello"; int y = 9; x+=y;

B.

String x = "Hello"; int y = 9; x= x + y;

C.

String x = null; int y = (x != null) && (x.length>0)?x.length():0;

D.

Tất cả các câu đều đúng

Trả lời:

Đáp án đúng: D


Đáp án A đúng vì phép toán `+=` được sử dụng để nối chuỗi (String) với một kiểu dữ liệu khác (trong trường hợp này là int). Java tự động chuyển đổi `int` thành `String` và thực hiện nối chuỗi. Đáp án B sai vì trong Java, bạn không thể gán trực tiếp kết quả của phép cộng giữa một `String` và một `int` cho một biến `String` mà không có sự chuyển đổi kiểu tường minh. Mặc dù Java sẽ tự động chuyển `int` thành `String` trong phép cộng, nhưng nó đòi hỏi bạn phải thực hiện gán một cách chính xác (ví dụ: `x = x + String.valueOf(y);` hoặc `x = x + y;` đều hợp lệ do cơ chế tự động unboxing và widening) Đáp án C sai vì nếu `x` là `null`, khi đó `x.length()` sẽ gây ra ngoại lệ `NullPointerException`. Biểu thức điều kiện `(x != null) && (x.length()>0)` sẽ bị lỗi khi `x` là `null` vì vế `x.length()` vẫn bị thực thi trước khi kiểm tra `x != null`.

Câu hỏi liên quan