JavaScript is required

Cho biết kết quả sau khi thi hành chương trình sau:
public class Short {
public static void main(String[] args) {
StringBuffer s = new StringBuffer("Hello");
if ((s.length() > 5) && (s.append("there").equals("False"))); //do nothing
System.out.println("value is : " + s);
}
};

A.

Giá trị xuất là Hello

B.

Lỗi biên dịch tại dòng 4 và 5

C.

Không có giá trị xuất

D.
Thông báo NullPointerException
Trả lời:

Đáp án đúng: A


Đoạn chương trình sử dụng một đối tượng StringBuffer `s` khởi tạo với giá trị "Hello". Dòng điều kiện `if ((s.length() > 5) && (s.append("there").equals("False"))` được thực thi như sau: 1. `s.length() > 5`: Kiểm tra xem độ dài của chuỗi `s` có lớn hơn 5 hay không. Ban đầu, `s` là "Hello" có độ dài là 5. Vì vậy, điều kiện `s.length() > 5` là sai (false). 2. `&&`: Toán tử `&&` (AND) yêu cầu cả hai vế của nó phải đúng (true) thì toàn bộ biểu thức mới đúng. Nếu vế đầu tiên đã sai thì vế thứ hai sẽ không được đánh giá. Do đó, `s.append("there").equals("False")` sẽ không được thực thi. 3. Vì điều kiện `if` là sai, nên phần thân của `if` (do nothing) không được thực thi. 4. `System.out.println("value is : " + s)`: Dòng này in ra giá trị của `s`. Vì `s.append("there")` không được gọi, `s` vẫn giữ giá trị ban đầu là "Hello". Do đó, kết quả in ra là "value is : Hello".

Câu hỏi liên quan