关于类的加载面试题

/**
 * 
 *  1.类的加载:当第一次创建该 类对象的时候,加载到内存当中,
 *    在加载时,会执行Static
 *    
 *  2.字段初始化问题
 *    2.1 静态字段初始化:是在静态代码块当中初始化
 *    2.2 非静态的字段初始化:它是在构造器当中做的初始化
 *    
 *  3.子类构造器默认会调用父类的构造器
 *  加载的顺序:
 *  1->    1
 *  2->    构造器SuperClass
 *  3->    2
 *  4->    4
 *  5->    3
 *  6->    main
 *  
 */
public class MyXq {

    private static MyXq xq = null;
    private SubClass sub = null;

    static {
        xq = new MyXq();
        System.out.println(3);
    }
    public MyXq() {
        sub = new SubClass();
        System.out.println(4);
    }

    public static void main(String[] args) {
        System.out.println("main");
    }
}

class SuperClass{
    SuperClass(){
        System.out.println("构造器SuperClass");
    }
}

class SubClass extends SuperClass{
    static {
        System.out.println(1);
    }
    SubClass(){
        super();
        System.out.println(2);
    }
}
以下是一些从参考引用中提炼及相关拓展的 Java 加载面试题: ### 基础概念 - 请简述 Java 加载加载阶段的主要任务是什么? - 加载阶段是加载过程的第一个阶段,JVM 的主要目的是将字节码从各个位置(网络、磁盘等)转化为二进制字节流加载到内存中,接着会为这个在 JVM 的方法区创建一个对应的 Class 对象,这个 Class 对象就是这个各种数据的访问入口 [^1]。 - 加载器有哪些型? - 加载器可以是 JVM 内置的(如 Bootstrap ClassLoader、Extension ClassLoader 和 Application ClassLoader),也可以是用户自定义的 [^3]。 ### 加载触发条件 - 接口没有被调用时,父接口会被加载吗?请结合代码说明。 - 接口没有被调用时,父接口不会被加载,只有当接口被调用时接口中的内容才会被加载。例如代码: ```java public class Test11 { public static void main(String[] args) { System.out.println(Tns.num); } } interface Tns extends In1{ static int num = 20; } interface In1{ Test06 t = new Test06() { { System.out.println("1"); } }; } ``` [^2] - 对于 static final 修饰的常量,在调用时加载情况有什么不同?请举例说明。 - static final 修饰并且显式赋值了的常量(编译时常量),调用时只会打印该常量,并不会涉及到加载(把加载到内存)。例如 `static final String s1 = "String";`,名.s1 调用时,不会进行加载,是被动引用;而 `static final String s2 = new String("String");`,名.s2 调用时,进行加载和初始化,是主动引用 [^4]。 ### 加载核心目标 - 加载阶段的核心目标是什么? - 加载阶段的核心目标是生成 Class 对象 [^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值