本帖最后由 小石姐姐 于 2018-4-20 09:33 编辑
复习总结
day05
-- 获取字节码的三种方式
** Object类的Class getClass()方法
Class clazz = student.getClass();
** 类名.class 属性
Class clazz = Student.getClass();
** 因为class是关键字,所以不能使用class作为对象的字节码名字,而是使用它的谐音clazz
** Class类的静态方法forName(String className)
Class clazz = class.forName("com.itheima.Student");
** 传入的是该类的全类名的字符串形式
** 该类可能会不存在,所以会抛出ClassNotFoundException异常
*** 同一个类的字节码对象只有一个,地址值是相同的,无论创建多少个对象。所以上面三种获取的字节码对象都是同一个
-- Calendar类:日历类,也是处理时间和日期的类,用于替代Date类
** 创建对象
** Calendar是一个抽象类所以不能直接使用new创建它的对象,而是使用它的静态方法创建对象
** static Calendar getInstance()
Calendar c = Calendar.getInstance();
** 静态字段
** static YEAR:年份
** static MONTH:月份 注意月份是从零开始的
** static DAY_OF_MONTH:日期
** static DAY_OF_WEEK:星期 注意星期是从零开始的
-- 包装类
** char Character
** int Integer
** 除了上面俩个其余都是自身类型首字母大写
** 包装类的作用
** 提供了一些转换方法 比如数值转换为字符串 字符串转换为数值类型
** 包装类默认值是null,基本数据类型的默认值是有值的。在实际开发的过程中可能会产生一些不必要的麻烦
** 自动装箱于自动拆箱
** 基本数据类型可以自动转换为自身所对应的包装类,而包装类也可以自动转换为所对象的基本数据类型
** 应用场景
** 集合只能存储引用类型数据。但是我们在使用集合的时候,可以直接把基本数据类型添加到集合中,这就是自动装箱所带来的好处,免去了我们自己定义的麻烦
-- 正则表达式
** 就是一种用于匹配字符串的规则,简单来说就是为了判断你所输入或者输出的数据是否满足这个规则,也可以使用这个规则去拆分字符串等功能。
** 什么事转义?
** 就是把一些在java中有特殊含义的字符,转化成普通的字符来使用。
day06
-- 迭代器的注意事项
** 使用迭代器遍历集合的时候,不可以增删集合的内容,否则会发生并发修改异常
** ConcurrentModificationException
** 如果非要使用迭代器增删元素可以使用ListIterator
-- List集合的特点和特有功能
** 特点
** 元素有序
** 有整数的索引
** 元素可以重复
** 特有功能
** void add(int index, E element): 指定索引处添加元素
** E remove(int index): 指定索引处删除元素
** E set(int index, E element): 指定索引处修改元素
** E get(int index): 指定索引处获取元素
day07
-- set 集合的特点
** 元素无序
** 元素不能重复
** 没有索引
-- Collections工具类
** static void shuffle(List list): 随机打乱集合中元素的顺序
** static void fill(List list, Object obj): 使用指定对象填充指定列表的所有元素
** static void swap(List list, int i, int j): 将指定列表中的两个索引进行位置互换
-- Map 集合的俩种遍历方式
** 第一种方式,把集合中的所有key放到一个set集合中,然后根据key获取值
** 第二种方式,把集合中有的key和value对象放到一个entry对象中,然后使用entry对象获取key和value
-- 可变参数:方法的形参可以传入不定数量个参数
** 定义格式: 形参数据类型... 形参名
** 注意事项:
- 可变参数的数量可以从0个到多个
- 可变参数只能是同一种数据类型
- 可变参数的定义位置必须在方法形参列表的最后一个
day08
-- 异常
** 就是不正常的情况, 是代码编译或运行时发生的错误
-- 异常的处理方式
** JVM默认处理方式
- 如果开发者没有处理异常, 则JVM会把异常的类型, 原因, 位置显示在命令行上, 并终止程序. 发生异常之后的代码都不会再执行
** 手动处理异常的2种方式
1. 捕获异常并处理: try...catch...
- 提前对可能发生的异常进行处理, 纠正错误并避免程序终止.
2. 直接抛出异常: 在方法声明上添加throws 异常类型
- 不捕获异常, 当发生异常时向方法外界抛出, 直到最顶层的方法, 最终终止程序
- 一般在无法处理异常, 或希望外界处理异常时使用
-- 异常的分类
** 编译时异常: 编译时就发生的异常
- Exception及其子类(除RuntimeException体系)
- 处理方式: 编译时期必须处理(try...catch或throws)
** 运行时异常: 编译时正确, 但运行时发生的异常
- RuntimeException类及其子类
- 处理方式: 编译时期可以自由选择处理或不处理
-- 递归
** 递归就是方法自己调用自己
** 注意事项
- 必须要定义方法的结束方式(出口). 无法结束的方法会导致内存溢出
- 递归次数要注意. 递归次数太多会导致内存溢出
- 所有递归都可以转换为循环
- 而循环不一定能转换为递归
|
|