首先了解一下集合框架与数组的区别?
举例来说明
1.使用数组的局限性。
如果要存放多个对象,可以使用数组,但是数组有局限性
比如 声明长度是10的数组,不用的数组就浪费了超过10的个数,又放不下
数组的长度变化情况,不能够和要保存的元素相匹配。通过代码来看一下。
public class TestCollection {
public static void main(String[] args) {
//创建一个长度为10的对象数组[注意格式]
Hero h[]=new Hero[10];
//往数组里放数据,Hero里边需要有一个带参的构造方法
h[0]=new Hero("哈哈");
//长度超过10就会放不进去
h[11]=new Hero("大谷");
}
}
针对上述数组出现的问题,来学习一下ArrayList.
2.ArrayList存放对象
为了解决数组的局限性,引入容器类的概念。 最常见的容器类就是
ArrayList。容器的容量"capacity"会随着对象的增加,自动增长
只需要不断往容器里增加英雄即可,不用担心会出现数组的边界问题。
代码展示
public class TestCollection1 {
public static void main(String[] args) {
//容器类ArrayList,用于存放对象
ArrayList h=new ArrayList();
//往list集合中添加数据
h.add(new Hero("hhh"));
System.out.println("第一次的大小为"+h.size());
h.add(new Hero("aaa"));
System.out.println("第二次的大小为"+h.size());
h.add(new Hero("bbb"));
System.out.println("第三次的大小为"+h.size());
}
}
可以看到它的容量在一次次的变化,但是并没有出现浪费的情况。可以直到ArrayList可以实现容量的动态增加。
额外了解到了。
关于重不重写toString方法,输出整个数组的情况
不重写
重写
为什么会这样呢?
因为输出每个单独类名的时候,他后面都会自动的加上toString方法,如果没有对这个方法进行重写,那么他用的就是Object类的toString方法,这个方法就是输出对象的地址值,所以一般都会通过重写toString方法来进行达到自己目的的输出。