Java Static Block总结

首先要理解Static是对于一个类来说的,包括静态变量,静态方法和静态类。
这里重点介绍一下静态块static block


static { }这一部分就是静态块,当类加载器载入类的时候,这一部分代码被执行,常用于对静态变量进行初始化工作。如果去掉static,{ }中的代码则会在创建类对象的时候才执行,(相当于把这部分代码复制到各个构造函数中)这样可以实现块中的内容在多个构造函数中的复用。
举个例子:


public class Main {

    {System.out.println("I am in {}");}
    public static String string ;
    public static void main(String[] args) {
        new Main();
        new Main();
        new Main();
    }
    static{
        System.out.println("I am in first static {}");
    }
    static{
        System.out.println("I am in second static {}");
        string = "I am static string";
        System.out.println(string);
    }

}

输出结果为:
I am in first static {}
I am in second static {}
I am static string
I am in {}
I am in {}
I am in {}
可见static{ }中的代码只执行一次,而{ }中的代码每当创建一个新对象的时候就会被执行。{ } 这样的代码块也被称为构造函数块(Constructor Block)

当然,静态块也有它的局限性,比如静态块代码大小不能超过JVM规定的某个值,不能用this,super关键字,不能从静态块中返回值,增加调试难度等等。因此,必须小心处理静态块中可能出现的异常

思考下面图片,根据阴影部分给定的代码,白色区域部分为什么要这样写?
static block应用

关于Java Static 的详细总结可以参考博文
Java Static用法总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值