JavaScript is required

Chọn phát biểu đúng cho chương trình sau:
class HasStatic {
private static int x = 100;
public static void main(String[] args) {
HasStatic hs1 = new HasStatic();
hs1.x++;
HasStatic hs2 = new HasStatic();
hs2.x++;
hs1 = new HasStatic();
hs1.x++;
HasStatic.x++;
System.out.println("x = " + x);
}
};

A.

Chương trình chạy và cho kết quả x = 102

B.

Chương trình chạy và cho kết quả x = 103

C.

Chương trình chạy và cho kết quả x = 104

D.
Tất cả các câu đều sai
Trả lời:

Đáp án đúng: C


Biến `x` là biến static, nghĩa là nó thuộc về class `HasStatic` chứ không phải thuộc về từng instance của class đó. Do đó, tất cả các instance của `HasStatic` đều dùng chung một biến `x`. Ban đầu, `x` được khởi tạo là 100. * `hs1 = new HasStatic();` // Tạo instance hs1, x = 100 * `hs1.x++;` // Tăng x lên 1, x = 101 * `hs2 = new HasStatic();` // Tạo instance hs2, x = 101 * `hs2.x++;` // Tăng x lên 1, x = 102 * `hs1 = new HasStatic();` // Tạo instance hs1 mới, x = 102 * `hs1.x++;` // Tăng x lên 1, x = 103 * `HasStatic.x++;` // Tăng x lên 1, x = 104 * `System.out.println("x = " + x);` // In ra giá trị của x Vậy, chương trình sẽ in ra `x = 104`.

Câu hỏi liên quan