异常,集合,I/O流中的一些区别
一.throw和throws的区别:
throws Exception 表明可能抛出的异常
throw new Exception();手动抛出异常
throws声明异常 throw抛出异常
有throw时必须得有throws,如若没有则运行错误 则有throws时不一定要有throw
抛出异常 是不是首先得声明了有异常 声明异常可以不抛出异常
二.error和exception区别:
error是程序员无法解决的错误,exception是程序员可以解决的错误
三.运行时异常和checked异常的区别:
对于异常分为两种:检查异常和非检查异常(运行异常)
检查异常:编译时被检测的异常(try和catch),编译不通过,检查语法(thow和thows配套使用)
非检查异常:编译时不被检查的异常
主要表现在以下两个方面 :
(1)如何定义方法
(2)如何处理抛出的异常
四.字节流和字符流的区别:
java流在处理上分为字符流和字节流。
(1)字符流(Writer/Reader)处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串。
(2)字节流(OutputStream/InputStream)处理单元为1个字节,操作字节和字节数组。
(3)字节流可用于任何类型
(4)字符流只能处理字符或者字符串。
(5)字节流在操作的时候本身是不会用到缓冲区的,是与文件本身直接操作的,所以字节流在操作文件时,即使不关闭资源,文件也能输出。
(6)字符流在操作的时候是使用到缓冲区的。如果字符流不调用close或flush方法,则不会输出任何内容。
所有文件的储存是都是字节(byte)的储存
五.Java.util有哪些常用的接口和类
Date时间类、Arrays包含用于操作数组的各种方法、File类、List、Map、Set、ArrayList
六.Arraylist和Linklist的异同
1.ArrayList是实现了基于动态数组的数据结构(有下标查询效率高),LinkedList是基于链表结构(无下标插入数据效率高)。
2.对于随机访问的get和set方法,ArrayList要优于LinkedList,因为LinkedList要移动指针。
3.对于新增和删除操作add和remove,LinkedList比较占优势,因为ArrayList要移动数据。
七.list、set、map的异同
面试题:你说说collection里面有什么子类。
面试的时候听到这个问题的时候,你要知道,面试官是想考察List,Set
list和set是实现了collection接口的。
Set:1.不允许重复对象
2. 无序容器,你无法保证每个元素的存储顺序,TreeSet通过 Comparator 或者 Comparable 维护了一个排序顺序。
3. 只允许一个 null 元素
4.Set 接口最流行的几个实现类是 HashSet、LinkedHashSet 以及 TreeSet。最流行的是基于 HashMap 实现的 HashSet;TreeSet 还实现 了 SortedSet 接口,因此 TreeSet 是一个根据其 compare() 和 compareTo() 的定义进行排序的有序容器。
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 或 Writerstream结尾都是字节流,reader和writer结尾都是字符流两者的区别就是读写的时候一个是按字节读写,一个是按字符。
在读写文件需要对内容按行处理,比如比较特定字符,处理某一行数据的时候一般会选择字符流。
只是读写文件,和文件内容无关的,一般选择字节流。