为什么使用自定义的类创建一维数组时要被实例化两次?
2009-12-19 09:18:33| 分类: |字号
问题:
Circle是自定义的类。
circles [ i ] 使用前需要被实例化,也就是数组成员完整的实例化是: circles = new Circle [10]; For (…) circles [ i ] = new Circle(); 上面的第二次实例不能省略,在VS2005上面由于缺少了第二步的实例化,编译通过但是调试的时候提示引用空类型。 但是语言自带的类型比如 int ,如果有这样的实例化: circles = new int[ 10 ]; 之后就可以直接引用数组成员了。 为什么会有这样的区别呢?
答案:
基本数据类型,定义数组时有默认值,例如int[] a = new int[10];
这数组的元素默认值均为0。而circle是个类
Circle[] circle = new Circle[4]; 只是在栈上分配了空间,circle[i]并为引用到堆上的对象(因为还未实例化)