java 对象初始化块_Java初始化块

实例初始化块

实例初始化块用于初始化类的对象。一个实例初始化程序只是一个类的代码块,但在任何方法或构造函数之外。实例初始值设定程序没有名称。它的代码只是放置在一个开放的大括号和闭包中。

示例

下面的代码展示了如何为Test类声明一个实例初始化器。注意,实例初始化程序在实例上下文中执行,并且关键字this在实例初始化程序中可用。

class Test {

private int num;

// An instance initializer

{

this.num = 101;

/* Other code for the instance initializer*/

}

/* Other code for Test class*/

}

多重实例初始化

一个类可以有多个实例初始化器。对于创建的每个对象,它们都以文本顺序自动执行。所有实例初始值的代码在任何构造函数之前执行。

下面的代码演示了构造函数和实例初始化函数的执行顺序。

public class Main {

{

System.out.println("Inside instance initializer 1.");

}

{

System.out.println("Inside instance initializer 2.");

}

public Main() {

System.out.println("Inside no-args constructor.");

}

public static void main(String[] args) {

Main m = new Main();

}

}

上面的代码生成以下结果。

Inside instance initializer 1.

Inside instance initializer 2.

Inside no-args constructor.

实例初始化程序中不能有return语句。

静态初始化块

静态初始化块也称为静态初始化器。它类似于实例初始化块。

它用于初始化一个类。 每个对象执行一个实例初始化器,而当类定义被加载到JVM中时,只对一个类执行一次静态初始化器。需要在其声明的开头使用static关键字。

在一个类中可以有多个静态初始化器。 所有静态初始化器都按文本出现的顺序执行,并在任何实例初始化器之前执行。

以下代码演示了何时执行静态初始化程序。

public class Main {

private static int num;

{// An instance initializer

System.out.println("Inside instance initializer.");

}

// A static initializer. Note the use of the keyword static below.

static {

num = 2018;

System.out.println("Inside static initializer.");

}

// Constructor

public Main() {

System.out.println("Inside constructor.");

}

public static void main(String[] args) {

System.out.println("Inside main() #1. num: " + num);

// Declare a reference variable of the class

Main si;

System.out.println("Inside main() #2. num: " + num);

new Main(); // Create an object

System.out.println("Inside main() #3. num: " + num);

new Main();// Create another object

}

}

上面的代码生成以下结果。

Inside static initializer.

Inside main() #1. num: 2018

Inside main() #2. num: 2018

Inside instance initializer.

Inside constructor.

Inside main() #3. num: 2018

Inside instance initializer.

Inside constructor.

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值