A a=new A();
运行时分为2步:
先定义A a
然后在构造函数中执行a=new A();变量声明时并不赋值,所以值类型全部为0,引用类型全部为null

解决方案 »

  1.   

    那我说的“在堆栈上声明a的引用,并默认初始化为指向null”是有这一步的咯?
      

  2.   

    那我说的“在堆栈上声明a的引用,并默认初始化为指向null”是有这一步的咯?
    所谓指向null,就是仅仅在堆上声明了a,但是不指向任何栈
      

  3.   

    系统默认不会给你指向null,会给你报错,没实例化
      

  4.   

    那我说的“在堆栈上声明a的引用,并默认初始化为指向null”是有这一步的咯?
    所谓指向null,就是仅仅在堆上声明了a,但是不指向任何栈
    你说反了吧,是在堆上声明了a,但是不指向任何堆空间吧。。
    那我们不拿引用类型来来说,就用值类型来说,比如int,
    int a=5;
    那肯定会有“在堆栈上声明a,并默认初始化为0”这一步,然后再内部在构造函数内部初始化为5?
      

  5.   

    那对于int a=5;会做两件事,第一在内存分配完毕后立即默认初始化为0,第二在构造函数中显示初始化为5