Java中实例初始化是什么?

23 篇文章 0 订阅
在这篇文章中,首先用一个例子来说明什么是实例变量的初始化,实例初始化和静态初始化。然后再解释实例初始化是怎样运行的。
1.执行顺序

看看下面的类,你知道哪一个最先被执行?

public class Foo {
 
	//instance variable initializer
	String s = "abc";
 
	//constructor
	public Foo() {
		System.out.println("constructor called");
	}
 
	//static initializer
	static {
		System.out.println("static initializer called");
	}
 
	//instance initializer
	{
		System.out.println("instance initializer called");
	}
 
	public static void main(String[] args) {
		new Foo();
		new Foo();
	}
}
输出:

static initializer called
instance initializer called
constructor called
instance initializer called
constructor called
2.Java实例初始化是怎样运行的?
上面的实例初始化包含一个print语句。要了解它是如何运行的,我们可以把它作为一个变量赋值语句(例如b = 0),那么这将不难理解。
而不是

int b = 0
,你可以写成
int b;
b = 0;

3.实例初始化什么时候有用?
使用实例初始化是罕见的,但它仍然可以成为有用的替代实例变量初始化的一个选择,如果:
(1)初始化代码必须处理异常;
(2)执行无法用实例变量初始化来的计算。
当然,这样的代码可以写在构造函数里。但是,如果一个类有多个构造函数,你就必须在每个构造函数里重复这段代码。
用实例初始化,你可以只编写一次代码,无论什么构造函数被用来创建对象,都将会被执行。(我想这只是一个概念,它没有经常被使用。)
还有一种实例初始化很有用的情况是是匿名内部类,不能声明任何构造函数。(这会是放置日志功能的一个好地方呢?)

相关文章:Object initialization in Java

原文:

What is Instance Initializer in Java?


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值