Java中的类属于引用数据类型,准确来说引用数据类型定义的不是类型的对象,而是类型对象的引用。引用的使用类似于C++中的指针。
Java声明类对象的引用,并赋初值:Person p = null;
C++定义类对象的指针,并赋初值:Person* p = NULL;
在C++中类对象的指针p并不是Person类的对象,它只是存放了一个Person类对象在内存中的起始地址。Java中类对象的引用和C++中类对象指针意义相同,类对象的引用本身的地址不代表对象的起始地址,但类对象的引用中存储了对象在内存中的起始地址。
在C++定义类对象的指针数组,代码可以这样写:
Person* p[3]; p[0] = new Person(); p[1] = new Person(); p[2] = new Person();
在Java中定义类对象的引用数组,代码可以这样写:
Person p[] = new Person[3]; p[0] = new Person(); p[1] = new Person(); p[2] = new Person();
看上面的两个例子就会发现,在Java中定义类对象的引用数组和在C++中定义类对象的指针数组有很大的相似性。注意:在Java中,“new Person[3]” 并不是在内存中分配了3个对象,它只是分配了3个对象的引用,类似于C++中3个对象的指针。