码迷,mamicode.com
首页 > 编程语言 > 详细

Java基础:初始化块

时间:2020-02-02 19:16:58      阅读:71      评论:0      收藏:0      [点我收藏+]

标签:public   依次   void   方法   常见   const   ring   语法   场景   

Java语言提供了很多类初始化的方法,包括构造器、初始化器等。除了这两种方法之外,我们还可以用初始化块(initialization block)来实现初始化功能。

基本语法

初始化块是出现在类声明中的语句块,它位于所有成员、函数、构造器之外。例如使用静态初始化块,我们的HelloWorld可以这么写:

public class Hello {
    static {
        System.out.println("Hello, world!");
    }
    public static void main(String[] args) {
    
    }
}

初始化块的执行时机

首先,初始化器和初始化块会按照出现顺序依次执行。之后,构造器的代码开始执行。以下的示例包含了三种初始化的方式,并且刻意安排了顺序。

public class Init {
    Say hello = new Say("hello");
    Say world = new Say("world");

    {
        new Say("static block");
    }

    Init() {
        System.out.println("Construction complete.");
    }
    
    Say bye = new Say("Bye!");

    public static void main(String[] args) {
        Init i = new Init();
    }
}

class Say {
    Say(String s) {
        System.out.println(s);
    }
}

以下输出结果展示了对象初始化代码的执行顺序:

$ java Init
hello
world
static block
Bye!
Construction complete.

对于静态初始化块,JVM保证它在类加载之后、实际使用之前被执行,一次。

常见场景

尽管初始化器和构造器已经可以满足大多数初始化的需求,在几种场景下初始化块还是非常有用的。

  • 存放所有构造器都包含的通用代码,从而减少重复代码。
  • 为匿名内部类初始化,因为它们无法定义构造器(它们甚至连名字都没有)。
  • 用静态初始化块为静态成员执行较为复杂的初始化工作。

Java基础:初始化块

标签:public   依次   void   方法   常见   const   ring   语法   场景   

原文地址:https://www.cnblogs.com/cocode/p/12253080.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!