• 个人总结面试题目(2019年8月待更新)


    1.java基础题目

    1.1类的加载顺序题目

    • 单个类
    package com.newbe.t2;
    /*
     * 测试单个类的执行顺序(静态代码块,非静态代码块,静态成员,成员变量,构造函数)
     * 总结单个类的执行顺序:
     * 1.先初始化静态成员变量(按照静态成员变量的顺序执行)
     * 2.执行静态代码块,只在第一次new执行一次,之后不再执行,而非静态代码块在每new一次就执行一次。
     * 3.执行mian方法(按照一般顺序执行)
     * 4.初始化成员变量
     * 5.非静态代码块
     * 6.执行构造函数
     * 7.回到main方法,执行main方法其他的语句
     * 简单来说:
     *         静态变量 > 静态初始块 > main方法(按顺序执行) > 成员变量 > 非静态初始块 > 构造器
     */
    public class ClassInitOrderTest {
        //静态变量
        public static String staticField = "static field";//1.先执行静态成员变量的初始化
        //静态代码块
        static {                            //2.执行静态代码块
            System.out.println(staticField);
            System.out.println("static block");
        }
        //成员变量
        private String field = "member field";//4.初始化成员变量,
        //普通代码块
        {                                    //5.执行非静态代码块
            System.out.println(field);
            System.out.println("non-static block");
        }
        //构造函数
        public ClassInitOrderTest() {        //6.执行构造方法
            System.out.println("constructor");
        }
        //main方法
        public static void main(String[] args) {
            System.out.println("start---------");//3.执行完静态代码块后,执行mian方法
            new ClassInitOrderTest();//4.执行实例化
           //new ClassInitOrderTest();
            System.out.println("end---------");//7.执行完构造方法回到正常的执行顺序结束
        }
    }
    /*
     只执行一个 new ClassInitOrderTest()结果:
    static field
    static block
    start---------
    member field
    non-static block
    constructor
    end---------
    */
    
    /*
    执行两个 new ClassInitOrderTest()结果:
    static block
    start---------
    member field
    non-static block
    constructor
    member field
    non-static block
    constructor
    end---------
    */

  • 相关阅读:
    网络知识梳理--OSI七层网络与TCP/IP五层网络架构及二层/三层网络(转)
    OSI七层模型与TCP/IP五层模型(转)
    C语言结构体指针初始化(转)
    关于空指针NULL、野指针、通用指针 (转)
    C语言的通用指针类型(void *)
    使用matlab生成用于ROM初始化的coe文件(转)
    电脑运行msi安装包提示the error code is 2503/2502如何解决
    mysql命令行修改字符编码
    struts 2 时间控件
    java 的 struts2 Spring Hibernate 三大框架的整合
  • 原文地址:https://www.cnblogs.com/fby698/p/11335496.html
Copyright © 2020-2023  润新知