作为一个初出茅庐的Java开发,遇到一个关于构造器的面试问题,其实很简单,但是不明白原理和没有实际操作过谁知道了,用此来记录问题,并分享给大家,希望不能和我这样,成为他们眼里的菜鸡,那么下面展示下问题代码
public class DemoTable_1 {
static {
System.out.println ("静态");
}
public DemoTable_1(Object o){
System.out.println ("Object===="+o);
}
public DemoTable_1(String o){
System.out.println ("String===="+o);
}
public static void main(String[] args) {
new DemoTable_1 (null);
}
}
看完,可以猜下运行结果,可能也会让你产生意外的收获
开始公布运行结果了
基础好的肯定会知道运行结果,但是对于像我这样的菜鸟来说,就比较那啥,不确定答案了,因为这里是传入的参数是null,我认为,可能两个构造器都会执行,但是不确定到底是哪个会执行,实际上是String类型构造器运行了,经过我多次操作发现了这个运行顺序和规则
静态代码块优先构造器(那么构造器会越精确类型的就优先级越高)
感谢大家的阅读!