Mua hosting giá rất rẻ => Xem ngay
java jpg Java core

Quảng cáo

Java - Hãy chọn đáp án thể hiện kết quả đúng của đoạn chương trình cho sẵn dưới đây (câu hỏi 2)

Bài tập này yêu cầu chúng ta hãy chọn đáp án thế hiện kết quả đúng của đoạn chương trình cho sẵn dưới đây, giải thích vì sao có kết quả đó và sử dụng Eclipse để kiểm chứng.

W.java
package baitap;

public class W {

	static int c = 0;

	public static void main(String[] args) {
		W w1 = c();
		W w2 = c(w1);
		W w3 = c(w2);
		W w4 = c(w3);
	}

	private W() {
		System.out.println("c = " + c);
	}

	static W c() {
		return c++ <= 0 ? new W() : null;
	}

	static W c(W w) {
		return w.c++ == 1 ? new W() : null;
	}

}

A

c = 1

c = 2

B

c = 1

c = 2

c = 3

C

c = 1

c = 2

c = 3

c = 4

D Lỗi biên dịch

Bài giải

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

Quảng cáo

Đáp án: A

Giải thích:

Quảng cáo

Trong đoan chương trình trên, chúng ta có biến tĩnh c với giá trị khởi tạo = 0.

Trong hàm main(), chúng ta có dòng code W w1 = c(); để khởi tạo đối tượng w1, phương thức c() lúc này sẽ kiểm tra nếu c <= 0 thì sẽ tạo 1 đối tượng của W, ngược lại trả về null, ở trường hợp này sẽ trả về w1 = new W(); (c++ là toán tử postfix nên thực hiện trước rồi mới tăng nên c lúc này = 0 thỏa điều kiện, sau đó tăng c lên 1). w1 = new W(); sẽ hiển thị giá trị của c sau khi tăng lên 1: c = 1.

Dòng code W w2 = c(w1); sẽ khởi tạo đối tượng w2, phương thức c(w1) lúc này sẽ kiểm tra nếu w1.c == 1 thì sẽ tạo 1 đối tượng của W, ngược lại trả về null, ở trường hợp này sẽ trả về w2 = new W(); (w1.c = 1 thỏa điều kiện, sau đó tăng c lên 1). w2 = new W(); sẽ hiển thị giá trị của c sau khi tăng lên 1: c = 2.

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Tiếp theo, dòng code W w3 = c(w2); sẽ khởi tạo đối tượng w3, phương thức c(w2) lúc này sẽ kiểm tra nếu w2.c == 1 thì sẽ tạo 1 đối tượng của W, ngược lại trả về null, ở trường hợp này sẽ trả về w3 = null (w2.c = 2 > 1). Sau đó c tăng lên 1 và bằng 3.

Quảng cáo

Cuối cùng, dòng code W w4 = c(w3); sẽ khởi tạo đối tượng w4, phương thức c(w3) lúc này sẽ kiểm tra nếu w3.c == 1 thì sẽ tạo 1 đối tượng của W, ngược lại trả về null, ở trường hợp này sẽ trả về w4 = null (w3.c = 3 > 1). Đến đây chương trình kết thúc.

Kết quả biên dịch chương trình bằng Eclipse:

ketqua bai tap static 2 PNG

Quảng cáo

Câu hỏi thường gặp liên quan:

Các chủ đề liên quan:

Quảng cáo

Top