(此篇文章将持续更新)
一、flush()和close()的区别
- flush():将流中的缓冲区缓冲的数据刷新到目的地中,刷新后,流还可以继续使用。
- close():关闭资源,但在关闭前会将缓冲区中的数据先刷新到目的地,否则丢失数据,然后在关闭流。流不可以使用。如果写入数据多,一定要一边写一边刷新,最后一次可以不刷新,由close完成刷新并关闭。
二、ArrayList和LinkedList的区别
LinkedList底层实现是链表,ArrayList底层实现是数组
LinkedList不存在扩容 的说法,因为是链表结构。ArrayList底层是动态数组存在扩容说法,默认的数组大小是10,在检测是否需要扩容后,如果扩容,会扩容为原来的1.5倍大小。原理就是把老数组的元素存储到新数组里面
ArrayList的查找快,增删慢,因为底层是数组,适用于查找元素。LinkedList底层是双链表,增删快,查找慢。
-
相同点:LinkedList和ArrayList的数据存储都是有序的,而且元素是可以重复的。
两者add都是将元素追加到现有集合元素的末尾。
三、Collection和Collections的区别
1、java.util.Collection 是一个集合的顶级接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式。List,Set,Queue接口都继承Collection
2、java.util.Collections 是一个集合的工具类。 它包含有各种有关集合操作的静态方法(对集合的搜索、排序、线程安全化等),大多数方法都是用来处理线性表的。此类不能实例化,就像一个工具类,服务于Java的Collection框架。
四、Comparable和Comparator的区别
- Comparable在java.lang包里,Comparator在java.util包里
- Comparable是自然排序接口(默认排序接口),Comparator是自定义排序接口
- Comparable是比较的意思,接口中实现了CompareTo方法。Comparator是比较器的意思,要先定义一个自定义比较器类,该类实现Comparator接口,重写compare(T t1,T t2)比较方法。 即为:Comparable 必须由自定义类内部实现排序方法,而 Comparator 是外部定义并实现排序的。
五、entrySet和keySet的区别
entrySet和keySet都是Map集合中的一种迭代方式。
-
KeySet():
Map集合遍历方式是键找值:即通过元素中的键,获取键所对应的值Map集合的键集是一个Set集合遍历Set集合,分别取出key,通过key找到value
-
entrySet()方法:
用于返回Map集合中所有的键值对(Entry)对象,以Set集合形式返回。
遍历set集合得到
Entry<String , String>
对象Entry<String , String>
对象调用getKey()
得到 keyEntry<String , String>
对象调用getValue()
得到 value
六、字节流与字符流的区别
字节流:以字节(byte)为单位输入输出,字节流按照8位传输
字符流:以字符(char)位单位输入输出,字符流按照16位传输
七、final finalize finally的区别
Final修饰变量、方法、类。修饰变量时变量不能改值,修饰方法时方法不能被重写,修饰类时类不允许被继承。
Finalize是方法,定义在Object类中,用于对象销毁时,由GC进行调用。
Finally:表示代码块,与try进行配合使用,无论try块中的代码是否正常执行,都将执行finally块中的代码。
八、HashMap和Hashtable有什么区别
HashMap去掉了Hashtable的contains方法
Hashtable是线程安全的,效率低,HashMap是非线程安全的,效率高
HashMap允许有一个null的键,Hashtable不允许键为null,值也不允许为null
九、HashMap 和 HashSet 区别
- HashMap实现了Map接口,而HashSet实现了Set接口
- HashMap用于存储键值对,而HashSet用于存储对象
- HashMap不允许有重复的键,可以允许有重复的值。HashSet不允许有重复元素
- HashMap允许有一个键为null,多个值为null,HashSet允许有一个null
- HashMap中使用put()将元素加入map中,而HashSet使用add()将元素放入set中
十、BIO、NIO、AIO有什么区别?
- BIO:Blocking IO 同步阻塞式IO,就是我们平时使用的传统IO,它的特点是模式简单,使用方便,并发处理能力低。
- NIO:Non Blocking IO 同步非阻塞IO,是传统IO的升级,客户端和服务端通过Channel(通道)通讯,实现了多路复用。
- AIO:Asynchronous IO 是NIO的升级,也叫NIO2,实现了异步非阻塞,是基于回调机制的IO。