Java - Hãy đưa ra kết quả sau khi biên dịch đoạn chương trình cho sẵn dưới đây.

Hãy đưa ra kết quả và giải thích sau khi biên dịch của đoạn chương trình sau và sử dụng Eclipse để kiểm chứng:

Employee.java
package baitap;

public class Employee {
	
	static int count=0;//will get memory only once and retain its value  
	  
	public Employee() {
		count++;  
		System.out.println(count);
	}
	
}

TestEmployee.java
package baitap;

public class TestEmployee {

	public static void main(String[] args) {
		Employee e1 = new Employee();  
		Employee e2 = new Employee();  
		Employee e3 = new Employee();  
	}
	
}

Bài giải

-------------------- ######## --------------------

Kết quả của đoạn chương trình trên:

1
2
3

Giải thích: Trong lớp Employee tôi khai báo 1 biến tĩnh count và khởi tạo giá trị = 0. Trong hàm tạo Employee() tôi có dòng count++, ý nghĩa của hàm tạo này là mỗi lần có một đối tượng Employee được tạo ra thì giá trị của biến count này sẽ tăng lên 1, và vì biến count là biến tĩnh nên tất cả các đối tượng sẽ dùng chung một biến này, nếu có một đối tượng nào làm thay đổi giá trị của biến thì tất cả các đối tượng khác cũng sử dụng đối tượng này sẽ nhận thấy được sự thay đổi đó. Trong lớp TestEmployee, tôi tạo ra đối tượng e1 thì lúc này giá trị của biến count sẽ tăng lên 1 và bằng 1, sau đó đối tượng e2 được tạo ra thì giá trị của biến count sẽ tăng lên 1 và bằng 2, tương tự đối tượng e3 được tạo ra thì giá trị biến count sẽ tăng lên 1 và bằng 3.

Kết quả biên dịch chương trình sử dụng Eclipse:

Nguồn: freetuts.net