复习
String
特点:
final修饰的类 - 不能继承
fianl byte[]
创建方式:
1.直接赋值
String str = ""; -> 常量池
2.构造方法创建
new String()
常用方法:
toCharArray() 转换为一个新的字符数组
CharAt() 返回指定索引处的char值
trim() 返回字符串副本,忽略前导空白和尾部空白
subString() 返回一个新的字符串,是此字符串的一个子字符串
split() -> 数组 根据给定正则表达式匹配拆分字符
Valueof() 返回类型参数的字符串表达式
编码问题:
字符 -> 字节:编码
str.getByte() --> utf-8
str.getByte("gbk")
字节 -> 字符:解码
new String(byte[])
正则表达式:
[]:一个中括号表示一个字符
开头和结尾: ^ $
? -> 0或1
* -> 0或多
+ -> 1或多
{n} -> 恰好n次
{n,} -> 至少n次
{n,m} -> 最少n次,最多m次
API:
matches() 匹配
replaceAll() 替换全部
split() 分割
StringBuilder 和 StringBuffer
多用builder
append()
insert()
delete()
reverse()
包装类 - Integer -> Number
常量池: 有范围 -> 一个byte字节的范围 -128~127
装箱: int -> Integer
拆箱:Integer -> int
Integer 和 String的转换
String -> Integer
String -> int
存储大量的数据 -> 数组 -> 一旦创建就不可变
int[] arr = new int[10];
数组的扩容/缩容
可变长数组 -> 集合(各种各样的类) - 数据结构
集合:
1.概念
集合相当于是个容器,主要负责存储任意数量的数据
2.分类
Collection(接口) - 有很多子接口/实现类
| - List(I)
| - Set(I)
| - Queue(I)
Map(接口)
Collection接口
1.创建 -> 是一个接口 不能new自己,只能new接口的实现类
2.常用API
1)普通常用
add() - 添加
remove() -删除
clear() - 清空
isEmpty() - 询问是否为空
contains() - 询问是否包含
size() - 获得集合的长度
2)集合与集合之间的方法 c1 和 c2两个集合
addAll() - 将c2中所有的元素添加到c1中
removeAll() - 将c2中出现过的元素从c1中删除
containsAll() - 问c2中是否包含c1中的所有元素
3)集合与数组之间的方法
集合 -> 数组
toArray() - 得到的返回值永远只能是Object类型
toArray(T<> []) - T表示数组需要的类型,并且跟数组的长度无关
数组 -> 集合
Arrays.asList()
得到的是一个集合,但是使用上得到ArrayList是一个Array类中的内部类
所以不能使用让给长度会修改的方法
例如: add()
3.注意:
collection没有get(),想要获取元素,必须使用Iterator迭代器获取
使用迭代器的前提:
这个接口必须是可迭代的.
Iterable接口 - 是一个超级接口
1.此接口中只要一个方法 - iterator
2.iterator 的返回值类型是 Iterator也是一个接口
Iterator接口中有三个方法:
next() - 移动到下一个
hashNext() - 询问有没有下一个
remove() - 删除元素
注意:如果迭代删除每一个元素,必须使用迭代器中的remove().否则会出现异常
异常:ConcurrentModificationException - 并发修改异常
解决: 不能调用集合中的remove()
只能使用迭代器中自己的remove()
remove() 删除的是迭代器中游标所在位置上的元素
3.forEach - 简易版迭代器
1)作用: 获得数组/集合中所有的元素
2)结构:
for(对象 : 集合){}
:前 -> 每取出来的一个对象
相当于迭代器中的 it.next()
:后 -> 要遍历的集合
3)缺点:
使用简易版迭代器,不能删除元素
弱类型 -> 支持所有类
泛型
1.特点:
a.规定了泛型,就只支持定义好的类型参数,只是在编译时有效,只是用来规范程序员写法的.
b.运行时状态下,是支持所有类型,支持Object
c.将类型作为参数使用,也就是说泛型可以放在所有存放类型的地方(方法参数/返回值类型/类)
2.使用泛型的步骤:
1.在类中定义泛型的类型
在类名后添加 <E> - 字母随意
2.在类中的方法中,具体类型就可以使用E来代替
3.泛型的作用:
为了优化方法的重载
复习JavaBean规范:实体类的书写规范
1.所有成员变量私有化,并且提供一对get()/set()
2.定义无参构造方法
3.重写toString()
4.重写equals() 和 hashCode()
5.所有基本数据类型建议使用包装类
数据结构 -> 数据和数据之间的关系
顺序结构
链表结构
相关代码下载:
https://github.com/xjq860955921/CSDN/tree/master/teacher/src/api03