Java碎碎念之类加载的时机

1)类的主动引用(一定会发生类的初始化)

-new一个类的对象

-调用类的静态成员(除了finall)和静态方法

-使用Java.lang.reflect包的方法对类进行反射调用

-当虚拟机启动,Java Hello,则一定会初始化Hello类,就是先启动main方法所在的类

-当初始化一个类,如果父类没有被初始化,则一定会初始化他的父类

2)类的被动引用(不会发生类的初始化)

-当访问一个静态域时,只有真正声明这个域的类才会被初始化

*通过子类引用父类的静态常量,不会导致子类初始化

-通过数组定义类引用,不会触发此类的初始化

-引用常量不会触发此类的初始化(常量在编译阶段就存入调用类的常量池中了)
代码测试可以参考下面的代码

import jdk.dynalink.beans.StaticClass;

import java.sql.SQLOutput;

/**
 * @author TR
 * @date 2020/5/30 - 下午 5:31
 */
public class Demo2 {
    public static void main(String[] args) {
        //A q = new A();
        //System.out.println(A.a);
        System.out.println("主方法初始化");
   A[] a=new A[10];

    }
}

class A extends AA {
    public static final int a = 100;
    int b = 200;

    static {
        System.out.println("静态初始化类A");
    }

    public A() {
        System.out.println("创建A类的对象");
    }
}

class AA {
    static String aa = "我是AA的常量";

    static {
        System.out.println("初始化父类AA");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我只会javase

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值