C++中可以直接使用默认构造函数,new出一个类数组,如。 Object *pOb= new Object[5];返回的是五个连续Object类数组第一个字节的指针地址。
而在java中。Object[] arrOb = new Object[5];返回的仅仅只是一个数组的引用,对象实体并没有真正被创建,后续须要arrOb[index] = new Object();一次次的将实体创建并用之前创建的数组中的每个元素引用指向它。好啰嗦。。。。由此可以看出,C++中类数组实体是在一片连续的内存空间中,而Java中的类数组很可能在内存中的分配是东一个西一个。
分析了一下这种设计的原因,如果一个对象占用64个字节,那么5个对象就须要320个字节的空间,当创建一个5个该对象数组时,C++会去内存寻找一块不小于320字节的空间用来存放这5个对象。而Java只须要在可用内存空间中找出5块不小于64字节的位置,分别存放5个对象即可。这么做的好处是内存利用率增加,坏处是导致对数组逐元素操作时内存寻址速度减慢,严重影响程序执行效率。