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.
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
-------------------- ######## --------------------
Đáp án: A
Giải thích:
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();
(vì 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
.
Bài viết này được đăng tại [free tuts .net]
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();
(vì 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
.
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
(vì w2.c
= 2 > 1). Sau đó c
tăng lên 1 và bằng 3.
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
(vì 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:
Câu hỏi thường gặp liên quan:
- Java - Viết chương trình tính lũy thừa của 2 số nguyên.
- 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.
- 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)
- Java - Hãy chọn đáp án đúng trong các đáp án cho sẵn của đoạn chương trình dưới đây (câu hỏi 1)
- Java - Hãy chọn đáp án đúng của đoạn chương trình cho sẵn dưới đây và giải thích.