12、Java基础---类初始化器和实例初始化器

本文详细介绍了Java中类初始化器(静态初始化器)和实例初始化器的概念及使用。类初始化器在类被初始化时执行,如创建实例、调用类方法或赋值类变量时。实例初始化器则在构造函数开始执行时自动调用,用于初始化实例变量。文章通过示例代码展示了如何使用这两种初始化器,并总结了类变量和类方法的相关知识点。
摘要由CSDN通过智能技术生成

类初始化器和实例初始化器

一、类初始化器(静态初始化器)

我们来回忆一下上一篇创建的类Id,每创建一个类的实例,都会为其赋上连续的标识编号1、2、3······

这里对该类进行修改,使得标识编号的开始编号并不是1, 而是一个随机数值, 程序如下:

// 标识编号类(通过随机数来设定开始编号)
import java.util.Random;
class RandId {
	private static int counter;	// 赋到了哪一个标识编号
	private int id;				// 标识编号
	static {
		Random rand = new Random();
		counter = rand.nextInt(10) * 100;
	}
	//-- 构造函数 --//
	public RandId() {
		id = ++counter;			// 标识编号
	}
	//--- 获取标识编号 ---//
	public int getId() {
		return id;
	}
}
public class RandIdTester {
	public static void main(String[] args) {
		RandId a = new RandId();
		RandId b = new RandId();
		RandId c = new RandId();
		System.out.println("a的标识编号:" + a.getId());
		System.out.println("b的标识编号:" + b.getId());
		System.out.println("c的标识编号:" + c.getId());
	}
}

输出:

代码中的如下部分称为类初始化器或静态初始化器,类初始化器也被称为静态程序块或static程序块;

static {
		Random rand = new Random();
		counter = rand.nextInt(10) * 100;
	}

具语法结构图如图:

正如其名,类初始化器是在类被初始化时执行的,所谓“类被初始化” 是指下述时间点:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值