java static块的执行时机

在Java中,`static`块是用来初始化类的静态变量或执行静态操作的代码块。`static`块在类加载时执行,具体的加载时机为:

1. **类首次加载时**:`static`块在类首次加载时执行,类的加载时机有以下几种情况:
   - 当创建类的第一个实例时。
   - 当调用类的静态方法或访问类的静态字段时。
   - 当使用反射操作来强制加载类。
   - 当类的静态成员(字段或方法)在代码中首次被引用时。

2. **加载顺序**:在类加载时,`static`块会按照它们在类中出现的顺序依次执行。如果一个类中有多个`static`块,它们会按照声明的先后顺序依次执行。

3. **只执行一次**:`static`块只会在类加载时执行一次,无论这个类被实例化多少次。

4. **优先级高于实例初始化块**:`static`块的执行优先级高于实例初始化块。即`static`块先于实例初始化块执行。

总的来说,`static`块的主要作用是在类加载时执行静态初始化操作,例如初始化静态变量、加载静态资源等。这确保了静态资源在类加载时可靠地初始化,而且只会被初始化一次。

public enum HttpMethod
{
    GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE;

    private static final Map<String, HttpMethod> mappings = new HashMap<>(16);

    static
    {
        for (HttpMethod httpMethod : values())
        {
            mappings.put(httpMethod.name(), httpMethod);
        }
    }

    @Nullable
    public static HttpMethod resolve(@Nullable String method)
    {
        return (method != null ? mappings.get(method) : null);
    }

    public boolean matches(String method)
    {
        return (this == resolve(method));
    }
}
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值