Java中的实例初始化器是什么?

了解更多java知识点击文本进行观看学习icon-default.png?t=M276https://www.bilibili.com/video/BV1vb4y1p7N4/

在这篇文章中,我将说明什么是实例变量初始化器、实例初始化器、静态初始化器,以及实例初始化器在 Java 中的工作原理。

1. 执行顺序

看看下面这个类,你知道哪个是最先执行的吗?

公共 类Foo {
 
	//实例变量初始化
	String s =  "abc" ;
 
	//构造函数
	public Foo ( )  { 
		System . 出来。println ( "构造函数调用" ) ; 
	}
 
	//静态初始化器
	static  { 
		System . 出来。println ( "调用静态初始化器" ) ; 
	}
 
	//实例初始化
	{ 
		System . 出来。println ( "调用实例初始化器" ) ; 
	}
 
	公共 静态 无效主要(字符串[ ] args ) {
		新Foo ();
		新富( ) ; 
	} 
}

输出:

称为静态初始化程序
实例初始化程序调用
构造函数调用
实例初始化程序调用
构造函数调用

2. Java 实例初始化器是如何工作的?

上面的实例初始化程序包含一个 println 语句。要了解它是如何工作的,我们可以将其视为变量赋值语句,例如b = 0. 这可以使它更容易理解。

代替

整数b =  0

,我们可以写成

诠释b ; 
b =  0 ;

因此,实例初始化器和实例变量初始化器几乎相同。

3. 实例初始化器什么时候有用?

实例初始化器的使用很少见,但在以下情况下,它仍然可以作为实例变量初始化器的有用替代方案:

(1) 初始化代码必须处理异常
(2) 执行无法用实例变量初始化程序表达的计算。

当然,这样的代码可以写在构造函数中。但是如果一个类有多个构造函数,你将不得不在每个构造函数中重复代码。

使用实例初始化器,您只需编写一次代码,无论使用什么构造函数创建对象,它都会执行。(我猜这只是一个概念,并不经常使用。)

实例初始化器有用的另一种情况是匿名内部类,它根本不能声明任何构造函数。(这会是放置日志功能的好地方吗?)

感谢 Heinrich Hartmann 的评论:

另请注意,实现接口 [1] 的匿名类没有构造函数。因此,实例初始化器需要在构造时执行任何类型的表达式。

最后想了解更多java知识关注微信公众号【HOME十二】获取更多资料

了解更多java知识点击文本进行观看学习icon-default.png?t=M276https://www.bilibili.com/video/BV1vb4y1p7N4/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值