数组弊端:长度固定,不能自动增长,所以有集合。
对象数组的内存图解:
基本数据类型存储的是值,引用数据类型存储的是对象的地址值
数组和集合区别:
- 数组可以存储基本数据类型,也可以存储引用数据类型,集合只能存储引用数据类型
- 集合长度可变,可以根据元素增加而增长(增加原数组的1.5倍)
//集合中Iterator迭代方法
Collection c = new ArrayList();
c.add("a");
c.add("b");
c.add("c");
c.add("d");
//如果在集合中加入对象,那么将对象向上转型为Object,要是想调用对象的方法必须先要向下转型
Iterator it =c.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
for(Iterator i = c.iterator;i.hasNext();){ //for循环用完就释放而while不会
Systom.out.println(i.next());
}
//输出:
//a
//b
//c
//d
迭代器原理:迭代器是对集合进行遍历,而每一个集合存储结构不同,所以每一个集合存和取是不一样的,那么就需要在每一个类中定义hasNext()和Next()方法。这样会让集合体系过于臃肿,迭代器将这样的方法向上抽取出接口,然后在每个类内部定义迭代方式,好处是所有类统一调用,在底层实现。