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。

相关文章
相关标签/搜索