2020.7.31 异常

发布于 2020-07-30  59 次阅读


1.学习内容

  • 异常

    • 异常说明
      • 程序运行中出现的不正常现象
      • 常见的:空指针,数组越界,光java就170多种异常
    • 异常继承体系

      • java.lang.Throwable 是所有异常和错误的基类
        • java.lang.Error 所有错误的父类
          • 所有错误都是Error结尾
          • 必须修改java源码,才可以修复的错误
        • java.lang.Exception 所以异常的父类
          • 所有锁雾都是Exception父类
          • 可以手动处理,让程序继续执行
          • Exception分类
            • RuntimeException 运行异常
            • 其他Exception 编译异常
          • 三个常用方法
            • getMessage() 返回异常信息
            • toString() 返回简短异常信息
            • printStackTrace() 异常信息追踪到标准错误流(写入文件)
    • 捕获异常相关

      • try{}…catch(){}..finally(){}
        • 可以使用多个catch
        • 可以将多个catch合并使用 | (不推荐使用)
      • throw 抛出一个异常对象(是对象,new的才是对象)
      • thorws 声明该方法有异常(是类)
    • 编译异常:

      • 编译异常:
        • 非RuntimeException,或者非他子类,都是编译异常
      • 特点:
        • 调用了抛出编译异常的方法,必须处理,否则编译失败
          • try 和 throws方法可以处理
        • 抛出异常 throw ,还需要在方法throws抛出类
    • 运行异常:

      • 运行异常
        • RuntimeException 或者他的子类都是运行异常
      • 特点:
        • 调用运行异常的方法,不能处理,只能修改代码
        • 发生了运行异常,处理异常没意义(比如传值不匹配 需要int穿了string)
        • 抛出异常只需要throw 不需要throws
      • 常见四大运行异常
        • 越界异常,空指针,类型转换,无效参数,IllegalArray
    • 子类父类异常问题

      • 子类继承父类的方法,可以抛异常,也可以不抛异常
      • 子类抛出的异常,不能大于父类抛出的异常
        • 多态时候,父类异常小于子类,无法抓取
      • 父类不抛异常,子类就不能抛出异常(子类只能使用try..catch)
      • 接口不能添加异常,只能使用try..catch
  • 数组

    • 数组:
      • 是一个容器,可以存储多个数据
    • 缺点:
      • 不能扩充 (长度固定)
    • 分类:
      • 基本类型数组,int [] ,String[]
      • 对象引用类型数组 Person[]
  • 迭代器

    • Iterator 接口的方法
      • hasNext()、next()、remove() 三个方法
    • Iterator 实现原理
      • 使用指针(索引)
      • 起始值是 -1,使用一次累加1,hasNext()判断下一个是否有元素
    • Iterator迭代器用while遍历(条件是hasNext)
  • 集合容器

    • 集合类的继承体系(浅蓝是接口)
    • 注意事项:
      • 并发修改异常(在循环读取的时候,长度改变就报异常)
        • 可以修改元素,不可以添加元素,不推荐删除元素
    • Collection 单列集合(值)

      • 重要:
        • 存储元素,取出元素,集合的存储方式
      • 每次只能装一个对象
      • 包含两个子类接口
        • 列表 List
          • 实现类ArrayList(数组列表)、LinkedList 链表
          • 可以重复
        • 集合
          • 子类HashSet(哈希表) –> 子类LinkedHashSet(链表哈希表)
          • 不可以重复
    • Map 双列集合(键-值)

2.扩展延伸知识

  • java中的transient
  • java中equals使用技巧

    • 常量.euqals() 可以有效避免空指针异常
  • java面向接口开发

    • 只需要知道方法需要什么,返回什么,可以做什么就可以
    • 接口是怎么实现的,不重要
  • 数组和集合

    • 相同点:存储数据
    • 不同:数组定长,结合变长
    • 类型不同:
      • 数组可以存基本类型,引用类型
      • 集合只能存引用类型,不能存储基本类型
    • 使用:
      • 数据多了,存储数组
      • 对象多了,存储集合
  • java中大数怎么处理?

    • BigInteget,BigDecimal可以处理超级大的数
    • BigDecimal构造最好使用字符串,不要使用double(默认就是doubule)
  • java包装类的一些常用常量

    • 共同:Max_Value,Min_Value
    • 转进制:toHexString,toBinaryString,toOctalString
    • 基本类型:intValue(),LongValue(),shortValue(),byteValue()
  • java 自动装箱拆箱

    • 装箱:编译器将基本类型都编译成引用类型
    • 拆箱:编译器将引用类型编译成基本类型
    • 风险:引用类型可以为null,所以造成了空指针异常(先判断)
  • java finally的坑

    • finally 和 try中语句冲突,一般以finally为准
      • try返回return a ,finally对a运算,返回的值是未运算的值
    • finally必须执行,try中有return,finally也有return ,以finally 为准

3.灵感代办

  • 能够使用Math类的方法
  • 能够说出自动装箱、自动拆箱的概念
  • 能够将基本类型转换为对应的字符串
  • 能够将字符串转换为对应的基本类型
  • 能够使用BigInteger类的加减乘除方法
  • 能够使用BigDecimal类的除法运算
  • 能够辨别程序中异常和错误的区别
  • 说出异常的分类
  • 列举出常见的三个运行期异常
  • 能够使用try...catch关键字处理异常
  • 能够使用throws关键字处理异常
  • 能够说出集合与数组的区别
  • 能够使用Collection集合的常用功能
  • 能够使用迭代器对集合进行取元素
  • 能够使用集合存储自定义类型
  • 能够说出List集合特点
  • 能够说出常见的数据结构
  • 能够说出数组结构特点
  • 能够说出栈结构特点
  • 能够说出队列结构特点
  • 能够说出单向链表结构特点

4.复习内容

5.学习成果&问题


Ares个人进阶之路