异常
异常大家族 Throwable
- 错误 :Error ,不能处理的,只能去修改代码
- 异常 :Exception, 可以处理,代码不用改,使用异常处理的方案来绕过异常
- 编译器异常 除了RuntimeException之外的异常 IO SQL 线程
- 运行期异常 RuntimeException及其子类
异常处理目的:为了保证程序能够继续运行下去
JVM虚拟机会自动处理(默认处理):
- 1.在控制台显示异常的类型
- 2.显示出现异常的位置
- 3.终止程序(实际上是终止当前的线程)
程序员如何处理异常?
- 1.try-catch代码块
try{
//可能出现异常的代码
}catch(异常类型 取个名字){
//如果try中的某行代码 匹配到 catch参数中 所 对应的异常,就会走这里的代码
}finally(豪华版){
这里面的代码“一定”会执行(即使前面有return也会)
}
//(catch后面的程序会往下走)
//如果catch不匹配 虚拟机会默认处理
- 2.自此方法,向上抛出异常 throws
当第一种try-catch 不能直接/不适合 直接处理异常的时候,会使用向上抛的方式抛出异常。谁调用此方法,谁处理异常
集合
-
数组:
1.长度固定
2.可以装任意的数据类型
3.所有元素数据类型必须保持一致
4.定义数组的时候就要规定好元素的数据类型、 -
对象:
1.长度固定(成员属性)
2.可以装任意的数据类型
3.每个元素数据类型可以不同
4.在写模板的时候就要规定好属性的数据类型 -
集合:
1.长度是可变的
2.只能装引用数据类型
3.每个元素数据类型可以不同
4.可以不规定,但是一般来说还是会规定这个集合统一装一种类型 -
泛型:一开始规定好这个容器使用统一的数据类型
格式:集合<数据类型> -
集合大家族 Collection
-
List :列表,可重复的、有序的
-
两个干儿子:ArrayList、LinkedList
ArrayList:底层结构是数组,增删效率低,查询获取高- ArrayList增删改查
//创建一个集合容器ArrayList,集合中一个元素都没有 ArrayList<String> list = new ArrayList<String>(); //增 list.add("张三"); System.out.println(list);//[张三] (因为重写了toString) //获取 集合的长度 size() System.out.println(list/size());//4 //删 remove(int index) remove(Object obj) list.remove(2); list.remove("王老五"); //改 set(int index,E e...) list.set(1,"李四") //查/获取 一个/全部遍历 get(int index) System.out.println("获取集合中第一个元素"+list.get(0)); System.out.println("获取集合中最后一个元素"+list.get(list.size()-1)); //只能遍历有序的集合 for(int i = 0; i<list.size();i++){ //get(i) System.out.println(list.get(i)); } //集合通用方法:增强for循环遍历 //增强for:foreach循环 for(元素的数据类型 变量名 : 集合名字){ 直接使用变量名 } 举例. for(String s :list){ System.out.println(s); } //将英雄 存进集合中 //创建一个可以装英雄的集合 ArrayList<Hero> heros = new ArrayList<Hero>; heros.add(new Hero(参数列表)); for(int i = 0; i<list.size();i++){ Hero h = herolist.get(i); System.out.println(h.getName()+","+h.getAge()); }
ListedList:底层结构是链表,增删效率高,查询获取低
-
-
Set :集,不可重复的、无序的
-
有序无序:有没有索引(角标)
有序:存储的顺序和获取的顺序是一样的
无序:存储的顺序和获取的顺序是不一样的
接口之间的继承:一个儿子可以有多个亲爹
练习
- 用到的知识点:封装,多态,集合,异常
0.构建模拟数据库类,用数组存储数据(用户和图书)
1.一级菜单显示:登录 注册 退出系统
2.登录成功去二级菜单
3.注册成功回到一级菜单
4.二级菜单显示:查看所有图书,新增图书,修改图书价格,删除图书,注销
5.遍历所有图书信息
6.新增图书:将图书加入数据库的数组中
7.修改图书价格:先输入图书编号,再修改
8.删除图书:先输入图书编号,在删除
9.注销:回到一级菜单
10.使用集合存储 用户 和图书 ,接口修改,实现类
11.处理系统中所有的异常(一二级菜单 价格输入)
【 图书管理系统(简易版 】参考答案:(BookManager_V3.0)可下载 https://github.com/wengdemo/BookManager.git