学习笔记(java)①④(异常,Collection,List)

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()

从此列表中删除并返回最后一个元素

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值