1.异常
异常概述
异常:就是程序出现了不正常的情况

Error:严重问题,不需要处理
Exception:称为异常类,它表示程序本身可以处理的问题
RuntimeExcepetion:在编译期是不检查的,出现问题后,需要我们回来修改代码
非RuntimeExcepetion:编译期就必须处理的,否则程序不能通过编译,就更不能正常运行了
JVM的默认处理方案
如果程序出现了问题,我们没有做任何处理,最终JVM会做默认的处理
①把异常的名称,异常原因及异常出现的位置等信息输出在了控制台
②程序停止执行
异常处理
如果程序出现了问题,我们需要自己来处理,有两种方案:
①try...catch...
②throws
异常处理之try..catch...
格式:
try{
可能出现异常的代码;
}catch(异常类名 变量名){
异常的处理代码;
}
执行流程:
程序从try里面的代码开始执行
出现异常,会自动生成一个异常类对象,该异常对象将被提交给Java运行时系统
当Java运行时系统接收到异常对象时,会到catch中去找匹配的异常类,找到后进行异常的处理
执行完毕之后,程序还可以继续往下执行
Throwable的成员方法
| 方法名 | 说明 |
|---|---|
| public String getMessage() | 返回此throwable的详细消息字符串 |
| public String toString() | 返回此可抛出的简短描述 |
|
public void printStackTrace() |
把异常的错误信息输出在控制台 |
编译时异常和运行时异常的区别
Java中的异常被分为两大类:编译时异常和运行时异常,也被称为受检异常和非受检异常
所有的RuntimeException类及其子类被称为运行时异常,其他的异常都是编译时异常
编译时异常:必须显示处理,否者程序就会发生错误,无法通过编译
运行时异常:无需显示处理,也可以和编译时处理一样处理
异常处理之throws
虽然我们通过try...catch...可以对异常进行处理,但是不是所有的情况我们都有权限进行异常的处理,也就是说,有些时候可能出现的异常是我们处理不了的,这个时候怎么办呢?
针对这种情况,Java提供了throws的处理方案
格式:
throws 异常类名;
注意:这个格式是跟在方法的括号后面的
编译时异常必须要进行处理,两种处理方案:try...catch...或者throws,如果采用throws这种方案,将来谁调用谁处理
运行时异常可以不处理,出现问题后,需要我们回来修改代码
自定义异常
格式:
public class 异常类名 extends Exception{
无参构造
带参构造
}
范例:
public class ScoreException extends Exception{
public ScoreException(){}
public ScoreException(String message){
super(message);
}
}
throws和throw的区别
throws throw
用在方法声明后面,跟的是异常类名 用在方法体内,跟的是异常对象名
表示抛出异常,由该方法的调用者来处理 表示抛出异常,由方法体内的语句处理
表示出现异常的一种可能性,并不一定会发生这些异常 执行throw一定抛出了某种异常
2.Collection
集合知识回顾
集合类的特点:提供一种存储空间可变的存储类型,存储的数据容量可以随时发生改变
集合类体系结构

Collection集合的概述和使用
Collection集合概述
是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素
JDK不提供此接口的任何直接实现,它提供更具体的子接口(如Set和List)实现
创建Collection集合的对象
多态的方式
具体的实现类ArrayList
Collection集合常用方法
| 方法名 | 说明 |
|---|---|
| boolean add(E e) | 添加元素 |
| boolean remove(Object o) | 从集合中移除指定的元素 |
| void clear() |
清空集合中的元素 |
| boolean contains(Object o) | 判断集合中是否存在指定的元素 |
| boolean isEmpty() | 判断集合是否为空 |
| int size() | 集合的长度,也就是集合中元素的个数 |
Collection集合的遍历
Iterator:迭代器,集合的专用遍历方式
①Iterator<E>iterator():返回此集合中元素的迭代器,通过集合的iterator()方法得到
②迭代器是通过集合的iterator()方法得到的,所以我们说它是依赖于集合而存在的
Iterator中的常用方法
E next():返回迭代中的下一个元素
boolean hasNext():如果迭代具有更多元素,则返回true
3.List
List集合概述和特点
List集合概述
①有序集合(也成为序列),用户可以精确控制列表中每个元素的插入位置。用户可以通过整数 索引访问元素,并搜索列表中的元素
②与Set集合不同,列表通常允许重复的元素
List集合特点
①有序:存储和取出的元素顺序一致
②可重复:存储的元素可以重复
List集合特有方法
| 方法名 | 说明 |
|---|---|
| void add(int index,E element) | 在此集合中的指定位置插入指定的元素 |
| E remove(int index) | 删除指定索引处的元素,返回被删除的元素 |
| E set(int index,E element) | 修改指定索引处的元素,返回被修改的元素 |
| E get(int index) | 返回指定索引处的元素 |
并发修改异常
ConcurrentModificationException
产生原因
迭代器遍历的过程中,通过集合对象修改了集合中元素的长度,造成了迭代器获取元素中判断预期修改值和实际修改值不一致
解决方案
用for循环遍历,然后用集合对象做对应的操作即可
ListIterator
ListIterator:列表迭代器
①通过List集合的ListIterator()方法得到,所以说它是List集合特有的迭代器
②用于允许程序员沿任一方向遍历列表的列表迭代器,在迭代期间修改列表,并获取列表中迭代器的当前位置
ListIterator中的常用用法
①E next():返回迭代中的下一个元素
②boolean hasNext():如果迭代具有更多元素,则返回true
③E previous():返回列表中的上一个元素
④boolean hasPrevious():如果此列表迭代器在相反方向遍历列表时具有更多元素,则返回true
⑤void add(E e):将指定的元素插入列表
增强for循环
增强for:简化数组和Collection集合的遍历
①实现Iterable接口的类允许其对象成为增强型for语句的目标
②它是JDK5之后出现的,其内部原理是一个Iterator迭代器
增强for的格式
格式:
for(元素数据类型 变量名: 数组或者Collection集合){
//在此处使用变量即可,该变量就是元素
}
范例:
int[] arr = {1,2,3,4,5};
for(int i: arr){
System.out.println(i);
}
数据结构
数据结构是计算机存储,组织数据的方式。是指相互之间存在一种或多种特定关系的数据元素的集合,通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率
常见数据结构之栈
数据进入栈模型的过程称为:压/进栈
数据离开栈模型的过程称为:弹/出栈
栈是一种数据先进后出的模型

常见数据结构之队列
数据从后端进入队列模型的过程称为:入队列
数据从前端立楷队列模型的过程称为:出队列
队列是一种数据先进先出的模型

常见数据结构之数组
数组是一种查询快,增删慢的模型
查询数据通过索引定位,查询任意数据耗时相同,查询效率高
删除数据时,要将原始数据删除,同时后面每个数据前移,删除效率低
添加数据时,添加位置后的每个数据后移,再添加元素,添加效率极低
常见数据结构之链表


查询数据,必须从头(head)开始查询
List集合子类特点
List集合常用子类:ArrayList,LinkedList
ArrayList:底层数据结构是数组,查询快,增删慢
LinkedList:底层数据结构的链表,查询慢,增删快
LinkedList集合的特有功能
| 方法名 | 说明 |
| public void addFirst(E e) | 在该列表开头插入指定的元素 |
| public void addLast(E e) | 将指定的元素追加到此列表的末尾 |
| public E getFirst() | 返回此列表中的第一个元素 |
| public E getLast() | 返回此列表中的最后一个元素 |
| public E removeFirst() | 从此列表中删除并返回第一个元素 |
|
public E removeLast() | 从此列表中删除并返回最后一个元素 |
1194

被折叠的 条评论
为什么被折叠?



