您的位置 首页 java

3.3. 什么是Java实例初始化器

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

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初始化程序如何工作

上面的实例初始化包含一个println语句。为了理解它是如何工作的,我们可以把它看成一个变量 赋值语句 。例如b=0. 这可以使它更容易理解。 替代 int b = 0; 我们可以写成: int b; b = 0; 因此,实例初始化器和实例变量初始化器几乎是一样的。

3.实例初始化器何时有用。

使用实例初始化器是很少见的,但是如果存在下面的情况,它仍然可以作为实例变量初始化器的有用替代: 1)初始化器代码必须处理异常。 2)执行不能由实例变量初始化器表示的计算。

当然,这些代码可以构造函数里面。但是如果一个类含有多个 构造函数 ,你必须重复每个构造函数中的代码。

使用实例初始化器,你只需要编译一次代码,无论使用说明构造函数创建对象,都将执行这个代码。(我想这只是一个概念,它不经常被使用)。 另外一个实例初始化起有用的地方是匿名的内部类,它不能声明任何构造函数。 (这将是一个好地方放置日志功能吗?) 感谢Heinrich Hartmann的评论:

文章来源:智云一二三科技

文章标题:3.3. 什么是Java实例初始化器

文章地址:https://www.zhihuclub.com/175614.shtml

关于作者: 智云科技

热门文章

网站地图