Tôi không phải là người mới đối với java và C#. Tôi nghĩ tôi hiểu khái niệm về phạm vi biến cho đến gần đây tôi đã hỏi câu hỏi này trong một cuộc phỏng vấn:Một câu hỏi khó về Java đơn giản: phạm vi biến
public class Q{ //starting y scope
static int x = 11;
private int y = 33; // Just added a “private” modifier to make it clearer.
public static void main(String args[]){
Q q = new Q();
q.call(5);
}
public void call(int x){
Q q = new Q();
this.x = 22;
y = 44;
System.out.println("Output: " + Q.x);
System.out.println("Output: " + q.x);
System.out.println("Output: " + q.y);
}
} //ending y scope
Xác định đầu ra của chương trình này.
Tôi đã trả lời câu hỏi trong cuộc phỏng vấn rằng đầu ra sẽ là ngoại lệ thời gian chạy. Theo sự hiểu biết của tôi, y được khai báo là private, và phương thức instance call() đang cố gắng truy cập cá thể biến private cá thể của một cá thể khác của lớp Q. Làm thế nào điều đó có thể xảy ra? Tuy nhiên, trả lời câu hỏi này sai đã không ảnh hưởng đến cuộc phỏng vấn của tôi quá nhiều vì đây là loại câu hỏi "cơ bản phức tạp". Nhưng, trả lời sai có nghĩa là kinh nghiệm Java của năm tôi cần được phục hồi, điều đó thật khủng khiếp!
Ai đó có thể giúp tôi về vấn đề này không? Tôi sẽ được rất nhiều đánh giá cao!
Sản lượng có 11,22,33 không? –
Không hoàn toàn chắc chắn làm thế nào đây là một câu hỏi "khó khăn". – R0MANARMY
Tôi có thể nói 22, 22, 33, 'x' là tĩnh, vậy tại sao nó không thể được thay đổi bởi' this.x = 22'? – Kevin