--------------
包装类
Integer
1.Integer i = 10; int -> Integer
自动装箱相当于Integer i = Integer.valueOf(10);
2.int a = i; Integer -> int
自动拆箱相当于int a = i.intValue();
public int intValue()
以 int 类型返回该 Integer 的值
public static Integer valueOf(int i)
返回一个表示指定的 int 值的 Integer 实例
3.构造方法创建初始化
new Integer(int i)
new Integer(String str)
4.String -> Integer
Integer.valueOf()
或new Integer(str)
String -> int
Integer.parseInt(str);
5.只有Integer有常量池
取值范围:-128~127
初始化 Integer i1 = 128;
Integer i2 = 128;
i1 == i2//false
此时相当于new对象
--------------------------------
数组:
1.定义长度后,长度不可变
2.可以存储基本数据类型和引用数据类型
3.一个数组只能存储相同类型的元素
集合:一个容器,主要存储任意类型的数据
1.可变长数组
2.存储引用数据类型
3.可以存储不同类型的元素
------------------------------------
Iterable-接口
1.有一个方法iterator() -> 获取一个迭代器
返回一个iterator接口的实现类(Itr)对象(向上造型)
2.迭代器
a.遍历数组或迭代集合中所有的元素
b.
hasNext() 判断有没有下一个元素
next() 获取下一个元素
remove() 删除当前元素
PS:迭代删除元素时需要使用迭代器中本身有的remove方法,如果使用集合的remove(Object o)会出现异常报错
ConcurrentModificationException - 并发修改异常
c.foreach 增强for循环
本质上就是一个迭代器
但是只能获取元素,不能修改(删除。。。)
------------------------------------
泛型
1.只要是类型的地方都可以使用泛型来代替,泛型表示所有类型(Object)
2.规定了的泛型仅在编译时有效,运行时还是支持Object类
定义泛型的步骤:
a.在类/接口上定义加上<E>
ps: Collection<E> col = new ArrayList();
b.在类/接口的方法中,具体类型就可以使用E来代替
作用:
让代码的复用性更强,比如不用写过多的重载方法