Tôi biết, đó là một chủ đề rất cơ bản, vì vậy nếu đó là câu hỏi trùng lặp, vui lòng cung cấp tham chiếu.Thứ tự khởi tạo trong Java
Say, có một đoạn mã sau:
public class Point {
int x = 42;
int y = getX();
int getX() {
return x;
}
public static void main (String s[]) {
Point p = new Point();
System.out.println(p.x + "," + p.y);
}
}
Nó ra: 42,42
Nhưng nếu chúng ta thay đổi thứ tự của sự xuất hiện của các biến:
public class Point {
int y = getX();
int x = 42;
int getX() {
return x;
}
public static void main (String s[]) {
Point p = new Point();
System.out.println(p.x + "," + p.y);
}
}
Nó ra: 42,0
Tôi hiểu rằng tôi n trường hợp thứ hai tình huống có thể được mô tả như một cái gì đó như: "Được rồi, tôi không biết giá trị x trả về là gì, nhưng có một số giá trị". Những gì tôi không hoàn toàn hiểu là làm thế nào x có thể được nhìn thấy ở đây mà không được nhìn thấy cùng với giá trị của nó. Nó là một câu hỏi về thời gian biên dịch và thời gian chạy? Cảm ơn trước.
Kiểm tra [JLS] (http://docs.oracle.com/javase/specs/ jls/se7/html/jls-4.html # jls-4.12.5) – assylias