Vâng, tôi đã có một mã số ví dụ:Khi lớp học được tải?
public class Main {
public static void main(String[] args) {
Test t; //1
Integer i = new Integer(1); //2
t = new Test(); //3
System.out.println(Test4.a); //4
}
}
class Test {
private int a = 10;
private Test2 t2; //5
List<Test2> list = new ArrayList<Test2>() {
{
for (int i = 0; i < a; i++) {
add(new Test2()); //6
}
}
};
}
class Test2 extends Test3{
}
class Test3 {
}
class Test4 {
public static final int a = 4;
}
Tôi không biết làm thế nào (toàn bộ hoặc một phần) và khi các lớp được nạp. Vì vậy:
Test t;
- nó không phải là hoạt động sử dụng, nhưng tham chiếut
phải là loại nhất định. Đã được thử nghiệm lớp nạp (có thể một phần, sau đó bao nhiêu giai đoạn - tải \ linking \ initializing - nó được thông qua) hoặc không có gì xảy ra?Integer i = new Integer(1);
- là Số nguyên được tải khi JVM bắt đầu hoặc trên dòng này?t = new Test();
- mức sử dụng đang hoạt động. Nó đã được tải hoàn toàn ngay từ đầu hoặc từ một số điểm (xem 1)System.out.println(Test4.a);
- làTest4
được tải hay không?- Đã
Test2
vàTest3
có được tải hay không? Nếu có thì khi nào?
Lưu ý rằng việc khởi tạo không giống như tải (hoặc liên kết). –
Nếu lớp ** Test ** không được tải ở dòng (1) thì loại nào sẽ có ** t ** thay đổi? –
Trong JVM, biến 't' sẽ không tồn tại; nó chưa được phân bổ. – rgettman