为了账号安全,请及时绑定邮箱和手机立即绑定

什么是初始化块?

什么是初始化块?

慕田峪9158850 2019-06-19 11:06:52
什么是初始化块?我们可以将代码放入构造函数、方法或初始化块中。初始化块的用途是什么?每个java程序都必须拥有它吗?
查看完整描述

3 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

首先,有两种类型的初始化块:

  • 实例初始化块

    ,和
  • 静态初始化块.

这段代码应该说明它们的使用以及它们的执行顺序:

public class Test {

    static int staticVariable;
    int nonStaticVariable;        

    // Static initialization block:
    // Runs once (when the class is initialized)
    static {
        System.out.println("Static initalization.");
        staticVariable = 5;
    }

    // Instance initialization block:
    // Runs each time you instantiate an object
    {
        System.out.println("Instance initialization.");
        nonStaticVariable = 7;
    }

    public Test() {
        System.out.println("Constructor.");
    }

    public static void main(String[] args) {
        new Test();
        new Test();
    }}

指纹:

Static initalization.Instance initialization.Constructor.Instance initialization.Constructor.

如果您希望运行某些代码,而不管使用哪个构造函数,或者希望为匿名类进行某些实例初始化,则实例化块非常有用。


查看完整回答
反对 回复 2019-06-19
?
墨色风雨

TA贡献1853条经验 获得超6个赞

好听的回答,再加几分

public class StaticTest extends parent {
    static {
        System.out.println("inside satic block");
    }

    StaticTest() {
        System.out.println("inside constructor of child");
    }

    {
        System.out.println("inside initialization block");
    }

    public static void main(String[] args) {
        new StaticTest();
        new StaticTest();
        System.out.println("inside main");
    }}class parent {
    static {
        System.out.println("inside parent Static block");
    }
    {
        System.out.println("inside parent initialisation block");
    }

    parent() {
        System.out.println("inside parent constructor");
    }}

这给了

inside parent Static block
inside satic block
inside parent initialisation block
inside parent constructor
inside initialization block
inside constructor of child
inside parent initialisation block
inside parent constructor
inside initialization block
inside constructor of child
inside main

这就像是在说显而易见的话,但似乎更清晰一些。


查看完整回答
反对 回复 2019-06-19
  • 3 回答
  • 0 关注
  • 897 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信