test只是 一个 MyClass数组,他只是创建一个能容纳10个MyClass的内存空间。但是确还没用开始创建 MyClass实例。而这个数组也是一个对象。用new也不奇怪,只是数组的构建方式也是比较特殊,难道是通过判断是否有[],来确定是否创建数组?

解决方案 »

  1.   

    尽信书不如无书。
    MyObject []myObjects = new MyObject[10];这个语句只是定义一个有10个元素的MyObject数组,数组名为myObjects。但myobjects[0]到myobject[9]10个MyObject对象都是null,未分配空间的。
      

  2.   


    myObjects 是在栈内存空间放着的,他指向堆内存的一个MyObject[10]的数组;并且这myObjects数组里面的每个值都是null  这怎么说是调用构造器呢?
      

  3.   

    请问,是不是可以这么总结:
    (1)类似于String s  = new String();这样的语句,new创建对象的时候会分配对象空间、并调用默认构造器。
    而:
    (2)类似于String[] ss = new String[10];这样的语句,只是得到一个引用数组,其中的每一个引用到目前为止都是null,直到我为其中的每一个引用创建对象,系统才会分配空间去存储初始化值。
    总之就是,只有调用了构造器,导致会产生初始值,系统才会分配空间去存储这些初始值?
    是吗?
    谢谢!
      

  4.   

    之 看来老师讲的new的时候就会调用构造方法有问题。