包装类 - 把基本数据类型封装
byte - Byte
short - Short
int - Integer
long - Long
double - Double
float - Float
boolean - Boolean
char - Charcter
Integer包装类:
1.创建
a.直接赋值
Integr i = 20;
b.构造方法创建
new Integer(“字符串”) --> String 转换成Integer
new Integer(int i)
2.装箱和拆箱
装箱: int 转换成 Integer
Integer.valueOf()
拆箱: Integer 转换成 int
i.intValue()
3.常用API
字符串和Integer之间的转化
int -> String
String中的 valueOf(int i)
Integer -> String
i.toString()
String -> Integer
Integer.valueOf()
String -> int
Integer.parseInt()
4.特征:
a.Integer是final修饰的类,不可被继承的类
b.基本数据类型和包装类是可以无缝切换(使用上没有任何区别)
5.常量池
a.在包装类中只有Integer有常量池
b.常量池的范围: byte的范围
-128 ~ 127
c.超过取值范围之外的,都是new对象
集合
1.分类
Collection - 接口(包含很多子接口/实现类)
子接口:
| - List
| - Set
| - Queue
Map - 接口(包含很多子接口/实现类)
Collection接口
1.创建
Collection col = new ArrayList() --> 向上造型
2.常用API
add() - 添加
contain() - 是否包含
isEmpty() - 是否为空
size() - 长度
remove() - 删除
clear() - 清空
3.集合和集合之间的方法
addAll()
removeAll()
retainAll()
containsAll()
4.集合和数组之间的转换
toArray() - 集合转换成数组
无参的,返回值类型永远只能是Object[],和泛型无关
toArray(<T> a) - 集合转换成数组
有参的,给的是一个具体的类型
例如: 需要一个String类型
toArray(new String[0])
new String[0],只是用来确定类型,数组的长度无关
asList(<T> a) - 数组转换成集合
注意: 获取到的ArrayList集合,是作为Arrays中的的内部类出现的
所以不是真正意义上的ArrayList
不能做改变数组长度的操作 - add()
Iterable接口
1.API 只有一个
iterator - 迭代器
2.作用:遍历/迭代数组(集合)
前提:必须继承Iterable接口的,也就是必须是可迭代的
3.iterator - 迭代器
a.运行原理:获得迭代器,是有有游标的,并且游标在第一个元素之前
b.三个方法:
hasNext() - 询问有没有下一个元素
next() - 获取下一个元素
remove() - 删除元素
注意:remove()不能使用集合中的remove(),因为会出现并发异常
ConcurrentModificationException
只能使用迭代器自身的remove()
c.简易版迭代器 - foreach
结构:
for(对象 : 集合){
要输出的内容
}
:前 -> 每一次迭代出来的临时变量
:后 -> 要迭代的集合/数组
缺点:只能获取,不能删除
泛型:
只要是类型的地方可以规定成泛型 <泛型/类型>
1.特点
a.只要是可以放类型的地方都可以使用泛型取代(例如:返回值类型/方法参数/类/接口)
b.规定了泛型,就只是定义好了类型,规定程序员的,并且只在编译时有效
c.运行时,还是支持Object类型
2.使用步骤:
a.在类/接口上定义/加上泛型
ps: Collection col = new ArrayList<~>();
b.在这个类的方法中,具体类型就可以使用E来代替