初始化块

Posted chy18883701161

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初始化块相关的知识,希望对你有一定的参考价值。

 

初始化块是和成员变量、成员函数一个级别的。一般用于类的初始化,也可执行其他java代码,作用和构造函数相同。

创建对象时,初始化块在构造函数之前执行。

初始化块分为普通初始化块、静态初始化块。

 

普通初始化块:
{
.........
}
创建对象时,在构造函数之前执行,没次创建对象时都会执行。

 

静态初始化块:
static{
........
}
执行优先级高于普通初始化块(在普通初始化块之前执行)。
和其它static成员一样,为类所有,只能访问static成员,但可以写其他java代码。
只在加载到内存时执行1次(只在创建第一个对象时执行),一般用于初始化类的成员(static)、类的公共资源。

 

一个类中可以有多个初始化块。对于多个普通的初始化块,先定义的优先级更高。

初始化块在javac编译时,原来的初始化块会消失,初始化块中的代码会被放在构造函数的函数体里的最前面。

 


创建对象时,会先初始化这个类的所有父类。

创建本类的第一个对象:
执行本类的初始化块,要先执行父类的初始化块,要先执行祖类的初始化块;
执行本类的构造函数,要先执行父类的构造函数,要先执行祖类的构造函数。

就是说最先调用祖类的静态初始化块,再调用父类的静态初始化块,再调用本身的静态初始化块;
再调用祖类的普通初始化块,再调用父类的普通初始化块,再调用自身的普通初始化块;
再调用祖类的构造函数,再调用父类的构造函数,再调用本身的构造函数。

 

 

 

示例:

 1 package my_package;
 2 
 3 public class Test {
 4 
 5     //普通初始化块。初始化块是和成员变量、成员方法一个级别的。创建对象时,在构造函数之前执行。每次创建对象时都会执行。
 6     {
 7         System.out.println("普通初始化块正在执行中");
 8     }
 9 
10     //静态初始化块。静态初始化块执行优先级高于普通初始化块,但属于类所有,只会执行一次(只在创建第一个对象时执行)
11     static{
12         System.out.println("静态初始化块正在执行中");
13     }
14 
15 
16 
17     //成员变量
18     private String str="hello";
19 
20     //构造函数
21     public  Test(){
22         System.out.println("构造函数正在执行中");
23     }
24 
25     //成员方法
26     public void out(){
27         System.out.println("正在执行成员方法");
28     }
29 
30     public static void main(String[] args) {
31         new Test();
32         new Test();
33     }
34 
35 
36 }

 

以上是关于初始化块的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 快速开发 代码块

Xcode 快速开发 代码块 快捷键

<code> vs <pre> vs <samp> 用于内联和块代码片段

Xcode自定义代码块

需要一种有效的方法来避免使用 Laravel 5 重复代码片段

如何使用 Swift 使用此代码片段为 iOS 应用程序初始化 SDK?