java中对象的初始化问题

最近又把java编程思想看了看。又有些收获。此书确实不错

java中的初始化相信很多人都知道。但是具体的初始化步骤,初始化几次确不一定。上代码

public class A{

    public static A a = new A();

    public static int i;

    public static int j= 2;

   

    public A(){

        i++;

        j++;

    }

   

    public static void main(String[] args){

        A a1= new A();

        System.out.println("i = " + a1.i);

        System.out.println("j= " + a1.j);

    }

}

输出结果是什么呢?

2和3.

对于java而言,构造对象时首先会执行自动初始化动作。即 初始化为

A=null;
i=0;
j=0;

  然后再次初始化话定义的默认值

a=new A();

 此处执行构造器导致i++,j++,结果

i=1;
j=1;

之后给a赋值,此时a不在为null,

然后就有点意思了

继续执行 i的默认初始化,因为i没有设置默认值,所以i还是1,然后j由于有默认值j变成了2

i=1;
j=2;

 最后在执行构造器i++,j++

最后结果

i=2;
j=3;

如果此处把a这个特殊的情况去除可以看出。初始化有三个步骤:

1.自动初始化为基本类型0,引用类型为null

2.设置默认值

3.执行构造器



原文地址:https://www.cnblogs.com/wanglonghai/p/4877076.html