java中的实例初始化

来源:互联网 发布:淘宝卖家不发货会怎样 编辑:程序博客网 时间:2024/06/04 18:46

实例初始化有:实例变量初始化、实例初始化和静态初始化

1、执行顺序

下面这块代码,其执行顺序是怎么样的?

public class Main{String s = "abc";public Main(){System.out.println("constructor called");}static {System.out.println("static initializer called");}{System.out.println("instance initializer called");}public static void main(String[] args){new Main();new Main();}}

输出:

static initializer calledinstance initializer calledconstructor calledinstance initializer calledconstructor called

2、java实例初始化是如何工作的?

上面的实例初始化包含一个打印语句。要理解如何工作的。我们以变量赋值语句为例

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

因此实例初始化和实例变量初始化是一样的。


3、什么时候实例初始化是有用的?

实例初始化的使用非常罕见,但是在下面两种情况下,是实例变量初始化的很好的一种替换方式。

(1)初始化代码要处理异常

(2)操作运算是不能用实例变量初始化来表示的

当然,这样的代码可以写在构造函数中,但是当有多个构造函数时,必须在每个构造函数中添加这些代码。

实例初始化,只需要写一次,不管是否用构造函数创建的对象,都会执行。另一种情况就是匿名内部类时

0 0