1.普通类和抽象类有哪些区别?
- 普通类不能包含抽象方法,抽象类可以包含抽象方法.
- 抽象类不能直接实例化,普通类可以直接实例化.
2.抽象类能使用final修饰吗?
不能,定义抽象类就是让其他类继承的,如果定义为final该类就不能被继承,这样彼此就会产生矛盾,所以final不能修饰抽象类.
3.接口和抽象类有什么区别?
- 实现:抽象类的子类使用extends来继承;接口必须使用implements来实现接口
- 构造函数:抽象类可以有构造函数;接口不能有
- main方法:抽象类可以有main方法,并且我们能运行它;接口不能有main方法.
- 实现数量:类可以有多个接口;但是继承只能继承一个抽象类.
- 访问修饰符:接口中的方法默认使用public修饰;抽象类中的方法是可以任意访问修饰符的
4. java 中 IO 流分为几种?
安功能来分:输入流input,输出流output
按类型来分:字节流,字符流
字节流和字符流的区别是:字节流按8位传输以字节为单位输入输出数据,字符流按16位
5.BIO,NIO,AIO有什么区别?
BIO:同步阻塞IO,就是我们平常使用的传统IO,他的特点是模式简单使用方便,并发处理能力低
NIO:同步非阻塞IO,是传统IO的升级,客户端和服务器端通过 通讯,实现了多路复用.
AIO:是NIO的升级,实现了异步非阻塞IO,异步IO的操作基于事件和回调机制.
6.Collection和Collections有什么区别?
java.util.Collection是一个集合接口.他提供了对集合对象进行基本操作的通用接口方法.Collection接口在java类库中有很多具体的实现.Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式,其直接继承接口有List与Set.
Collections则是集合类的一个工具类,其中提供了一系列静态方法,用于对集合元素进行排序,搜索以及线程安全等各种操作.
7.List,Set.Map之间的区别是
Lsit: 继承接口为Collection,实现类是AbstartList常见子类有ArrayList,LinkedList,Vector,元素是可重复的,并且有序的,Vector线程安全
Set: 继承接口为Collection,实现类是AbstartSet常见子类有Hashset,LinkedHashSet,treeSet,元素是不可重复的,无序的.
Map: 常见实现类是HashMap,HashTable,不可重复的,HashTable是线程安全的.
8.HashTable和HashMap的区别?
HashMap去掉了HashTable的contains方法,加上了containsValue和containsKey方法.
HashTable是同步的,HashMap是非同步的,效率上比hashTable要高.
hashMap允许空键值,而hashTable不允许
9.说一下hashMap的实现原理
hashMap概述:hashMap是基于哈希表的Map接口非同步实现,此实现提供所有可选的映射操作,并允许使用null值和null键,此类不保证映射的顺序.
hashMap的数据结构:hashMap实际上是一个"链表散列"的数据结构,及数组和链表的结合体
当我们网hashMap中存放元素时,首先根据key的hashcode重新计算hash值,根据hash值得到这个元素在数组中的下标位置,如果数组中该位置存放了其他值,name在这个位置上元素将以列表的形式存放,新加入的放在链头,先加入的放在链尾,如果数组中该位置没有元素,就直接将该元素放到数组上的该位置.
需要注意的是jdk1.8之后对hashMap进行了优化,当链表中的数据超过八个之后,该链表会转为红黑树来提高查询效率
10.HashSet的实现原理
HashSet底层由HashMap实现
HashSet的值存放于HashMap的key上