面试题面试
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。