面試題面試
package statict;對象
public class StaticTest2 {
static Static2 s2 = new Static2();
static int i = 0;
static int j ;
static class Static2{
public Static2() {
StaticTest2.i++;
StaticTest2.j++;
}
}
public static void main(String[] args) {
new StaticTest2();
System.out.println(StaticTest2.i);
System.out.println(StaticTest2.j);
}class
}變量
輸出結果:方法
0static
1new
主要面試點:對象初始化過程、靜態變量初始化過程void
解析:首先靜態變量依次執行初始化過程,首先是聲明變量,並設置默認值。注意是默認值不是初值。
此時各個變量的值爲:
s2 = null;
i = 0;
j = 0 ;
隨後,對s2賦初值,執行Static2的構造方法,i++,j++。此時i=1,j=1
而後,對變量 i 賦初值,由於變量 j 沒有初值,也就不會有這個過程。此時,i=0,j=1。