Java第一阶段(12)【 异常、集合 】 11.21

版权声明:本文为 欧皇柯基 原创文章,非商用自由转载-保持署名-注明出处, https://blog.csdn.net/qq_42829628/article/details/84331824

第一阶段

异常

异常大家族 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

猜你喜欢

转载自blog.csdn.net/qq_42829628/article/details/84331824