Java面試 對象初始化過程、靜態變量

面試題面試

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。

相關文章
相關標籤/搜索