记录一下遇见和做过的JAVA编程题...
JAVA 测试I http://www.jianshu.com/p/76b36d18844d
JAVA 测试II http://www.jianshu.com/p/e7f7d29b185a
JAVA 测试III http://www.jianshu.com/p/64d3495989a5
1
下面这段代码输出什么?
class A {
static int a = 1;
static {
System.out.println(a);
}
public A() {
System.out.println(a);
}
}
class B extends A {
static int a = 2;
static {
System.out.println(a);
}
public B() {
System.out.println(a);
}
}
public class Test {
public static void main(String args[]) {
B a = new B();
}
}
解析: 继承关系下, 不管是把子类实例化,还是调用子类的静态方法等, 一定是先初始化父类的静态块,在初始化子类的静态块, 然后是父类的非静态块,子类的非静态块, 再然后 父类的构造方法,子类的构造方法.
故输出 ** 1 2 1 2**