Static block(class initializer)

本文详细介绍了Java中静态块(static block)和初始化块(initializer block)的区别及使用场景。静态块仅在类首次加载时执行一次,主要用于设置数据库连接、API初始化等操作;而初始化块则在每次创建类实例时都会执行,用于初始化类构造函数中的公共部分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

static block static {}

The code inside static block is executed only once: the first time you make an object of that class or the first time you access a static member of that class (even if you never make an object of that class,actually, when class is resolved).

initializer block {}

initializer block contains the code that is always executed whenever an instance is created. It is used to declare/initialize the common part of various constructors of a class.

An xample

package com.practice.staticblock;

public class TestStaticBlock {
    private static final int a;
    //static block
    static {
        System.out.println("Call static block");
        a = 100;
    }
    //initializer block
    {
        System.out.println("Call common part");
    }

    public TestStaticBlock() {
        System.out.println("Call constructor with no parameter");
        // TODO Auto-generated constructor stub
    }

    public TestStaticBlock( int a ) {
        System.out.println("Call constructor with parameter");
        // TODO Auto-generated constructor stub
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println("a: " + TestStaticBlock.a);
        new TestStaticBlock();
        new TestStaticBlock(100);
    }
}

Output:

Call static block
a: 100
Call common part
Call constructor with no parameter
Call common part
Call constructor with parameter

约束

A block of code static { ... } inside any java class. and executed by virtual machine when the class is called or instantiated.
1. No return statements are supported.
2. No arguments are supported.
3. No this or super are supported.

用途

  1. Set DB connnection
  2. API init
  3. logging

总结

  • static block is executed ONLY once
  • static block is executed BEFORE constructor
  • Initializer block is executed whenever a class being instantiated
  • Initializer block is always executed BEFORE constructor

Refer to: static block in java

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值