Java基础面试题

开课吧开课吧锤锤2021-02-20 17:35

点赞
有用
分享分享

打开浏览器,搜索有关程序员的面试题,会出现上万条的答案,盲目的人会选择,都存下来慢慢的去学习,精明的人,会选择一个大神,跟随大神的脚步提升自己。但是谁又不会私藏一些自己的技术呢?所以一个好的学习方式,是找到对的地方,对的老师,系统学习。今天依旧为大家继续带来Java面试题精选——Java类初始化顺序。

解析:

先说结论: 基类静态代码块,基类静态成员字段(并列优先级,按照代码中出现的先后顺序执行,且只有第一次加载时执行)

——>派生类静态代码块,派生类静态成员字段(并列优先级,按照代码中出现的先后顺序执行,且只有第一次加载时执行)

——>基类普通代码块,基类普通成员字段(并列优点级,按代码中出现先后顺序执行)

——>基类构造函数

——>派生类普通代码块,派生类普通成员字段(并列优点级,按代码中出现先后顺序执行)

——>派生类构造函数

代码验证:

class Log {

    public static String initLog(String log) { System.out.println(log);return null; }

}

/**

 *  基类

*/

class Base {

    static { System.out.println("Base Static Block 1"); }

    private static String staticValue = Log.initLog("Base Static Fiels");

    static { System.out.println("Base Static Block 2"); }

    { System.out.println("Base Normal Block 1"); }

    private String value = Log.initLog("Base Normal Field");

    { System.out.println("Base Normal Block 2"); }

    Base() { System.out.println("Base Constructor"); }

}

/**

 *  派生类

 */

public class Derived extends Base {

    static { System.out.println("Static Block 1"); }

    private static String staticValue = Log.initLog("Static Fiels");

    static { System.out.println("Static Block 2"); }

    { System.out.println("Normal Block 1"); }

    private String value = Log.initLog("Normal Field");

    { System.out.println("Normal Block 2"); }

    Derived() { System.out.println("Derived Constructor"); }

/**

 *  主线程

 */

public static void main(String[] args) {

    Derived derived = new Derived();

}

控制台结果输出:

Base Static Block 1

Base Static Fiels

Base Static Block 2

Static Block 1

Static Fiels

Static Block 2

Base Normal Block 1

Base Normal Field

Base Normal Block 2

Base Constructor

Normal Block 1

Normal Field

Normal Block 2

Derived Constructor

以上就是小编为大家整理的面试经典题,如果这些资料还不足以满足您学习的欲望,那就点击下方图片,免费领取Java开发大厂面试资料Java

好的选择成就优秀的自己。赶紧领取资料吧!

有用
分享