对象的生成和销毁——对象的数据位于何处?怎样控制对象的生命周期?
1、C++方式,效率优先,为了追求最大的执行速度,对象的存储空间和生命周期可以在 编写程序时确定,通过将对象至于堆栈或静态存储区域内来实现。
这种方法将存储空间分配和释放置于优先考虑的位置,但牺牲了灵活性,因为我们必须自己控制对象的数量、生命周期和类型。在堆栈中创建的对象,编译器无法确定对 象存活的时间。
2、java方式,在堆(heap)的内存池中动态地创建对象,只有在运行时刻才知道需要多少对象。由于存储空间是在运行时刻被动态管理的,所以需要大量的时间在堆中分配存储空间(远远大于在堆栈中创建存储空间的时间)。在堆中创建的对象,编译器可以确定对象存活的时间,并自动销毁它。
collection用于管理其他对象,它持有其它对象的引用。在需要时,collection的容量将被扩充,collection对象会处理所有细节。(java提供了很多不同类型的容器,List,Map,Set)。容器本身提供了处理元素置入和取出的方式,但是单一选取元素的方法很受限制。所以我们要用Iterator去选取容器中的元素,它将容器转换成一个序列。