6
嗯,我有這樣的代碼:當類加載?
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;
}
我不知道類裝入如何(全部或部分)和時間。所以:
Test t;
- 它不是一個有效使用時間,但參考t
必須是一個明確的類型。是測試類加載(也許部分,然後有多少個階段 - 加載\鏈接\初始化 - 它通過)或沒有發生?Integer i = new Integer(1);
- 在JVM啓動時或在此行上是整數加載的?t = new Test();
- 活動用法。它是從一開始或從某個點完全加載(請參閱1)System.out.println(Test4.a);
- 是Test4
加載與否?- 是否已加載
Test2
和Test3
?如果是,那麼什麼時候?
注意初始化與加載(或鏈接)不同。 –
如果** Test **類沒有在第(1)行加載,那麼什麼類型會有變量** t **? –
在JVM中,變量't'還不存在;它尚未分配。 – rgettman