一.throw和throws:
- throw代表动作,表示抛出一个异常的来动作;throws代表一种状态,代表方法可能自有异常抛出
- throw用在方百法实现中,而度throws用在方法声明中
- throw只能用于抛出一种异常,而throws可以抛出多个异常
二.error和exception:
- Exception是java程序运行中可预料的异常情况,咱们可以获取到这种异常,并且对这种异常进行业务外的处理。
- Error是java程序运行中不可预料的异常情况,这种异常发生以后,会直接导致JVM不可处理或者不可恢复的情况。
三.运行时异常和checked异常:
- 运行时:程序在运行过程中出现的异常,运行时异常,不需要用throws 声明抛出 异常对象所属类,也可以不用throw 抛出异常对象或异常引用。对于调用该方法,也不需要放于 try-catch 代码块中
- 检查:检查异常 : 一旦 用throw 抛出异常,如果当前方法 可处理异常,那么直接在该方法内用try-catch 去处理。如果当前方法不具备处理该异常的能力,那么就必须在 参数列表后方法体前用 throws 声明 异常 所属类,交给调用该方法的 调用者(方法) 去处理
四.字符流和字节流:
- 字符流:用于处理文字和字符的 流。操作完成后不关闭流,数据无法传递。字符流有缓冲区,将数据接受于缓冲区,达到区的极限(通过手动 1.colse 2.flush)就会进入文件中,打开文件次数少
- 字节流:文字以外的都可以用。操作完成后不需关闭流,也可以传递数据。每传一次数据就会打开一次文件,打开数据次数多。占用内存。缓冲流只在文件输出数据时存在。
五.arraylist和linkedlist的异同
- ArrayList是实现了基于动态数组的数据结构,而LinkedList是基于链表的数据结构;
- 对于添加和删除操作,LinkedList比较占优势,因为ArrayList要移动数据。
六.list,set,map有什么异同
- List:
- 1.可以允许重复的对象。
- 2.可以插入多个null元素。
- 3.是一个有序容器,保持了每个元素的插入顺序,输出的顺序就是插入的顺序。
- 4.常用的实现类有 ArrayList、LinkedList 和 Vector。
- Set:
- 1.不允许重复对象
- 2.无序容器,你无法保证每个元素的存储顺序,TreeSet通过 Comparator 或者 Comparable 维护了一个排序顺序。
- 3.只允许一个 null 元素
- 4.Set 接口最流行的e79fa5e98193e58685e5aeb931333431373838几个实现类是 HashSet、LinkedHashSet 以及 TreeSet。
- Map:
- 1.Map不是collection的子接口或者实现类。Map是一个接口。
- 2.Map 的 每个 Entry 都持有两个对象,也就是一个键一个值(键值对),Map 可能会持有相同的值对象但键对象必须是唯一的。
- 3.TreeMap 也通过 Comparator 或者 Comparable 维护了一个排序顺序。
- 4.Map 里你可以拥有随意个 null 值但最多只能有一个 null 键。
- 5.Map 接口最流行的几个实现类是 HashMap、LinkedHashMap、Hashtable 和 TreeMap。(HashMap、TreeMap最常用)
七.输入流和输出流的区别
- 输入输出的方向是针对程序而言,向程序中读入数据,就是输入流;从程序中向外写出数据,就是输出流
- 从磁盘、网络、键盘读到内存,就是输入流,用 InputStream 或 Reader
- 写到磁盘、网络、屏幕,都是输出流,用 OuputStream 或 Writer