1.集合接口的结构:
Collection:List、Set
Map
2.集合接口各自的作用:
Collections类:对集合进行操作
Collection接口:存储对象,可重复
List接口:可重复存储,有序,线性结构
Set接口:不重复的,无序
Map接口:存储键值对,键是唯一的
3.List 实现类有哪些?区别?
ArrayList: 底层技术是数组,遍历和随机访问速度快,
插入和删除效率低;
线程非安全,速度快;
Vector: 线程安全,速度慢;
支持枚举遍历。
LinkedList: 底层是链表
插入 和 删除效率高,遍历和随机访问慢。
4.Set接口实现类有哪些?区别?
HashSet:唯一
可以存null值
数据结构是 哈希表
存储数据唯一原理:
先调用hashCode()方法,值不同,
认为是不同对象可存储;值相同,
再掉用equals()方法比较,相同
认为是相同对象 不能存储,不相同,
则可以存储。
TreeSet:
数据结构 二叉树
可自然升序排序,
可自定义排序重写 compareTo()方法
LinkedHashSet
数据结构是: 链表和哈希表
可存null值
可按添加顺序访问
5.Map接口实现类有哪些?区别?
HashMap:
线程非安全,速度快
可存 null键,null值
如果键相同了,会覆盖之前的值(键是唯一的)
Hashtable
线程安全,速度慢
TreeMap
可按键排序
6.String,StringBuffer,StringBuilder区别?
String:定长 ,new的存在堆中,不是new出来的存在方法区的常量池中
== 判断地址 对象
equals()比较值
concat()连接,创建新的对象
频繁更改字符串的值时:
StringBuffer:线程安全,速度慢
StringBuilder:不安全,慢
7.String类常用的方法?
length()长度
charAt(index)
substring(begin,end):从begin到end-1
8.== 与 equals区别?
== 判断地址 对象
equals()比较值
9.什么是装箱拆箱?8个封装类是什么?
装箱:基本->引用
把值包装成对象
拆箱:引用->基本
把对象中的值取出来
Byte Short Integer Long Float Double Character Boolean
10.什么是序列化和反序列化?
永久性的存储对象
ObjectInputStream 反序列化
ObjectOutputStream 序列化
11.线程的生命周期?
新建 new
就绪
运行
阻塞
区别:
wait():参数可选 ms,放弃了执行权,放弃了锁
sleep():必须带参 ms,放弃了执行权,不放弃锁
死亡
12.实现线程的两种方式?区别?
继承Thread:继承类中所有能继承的方法
实现接口Runnable只有实现run();更有利于资源共享,可以绑定同一对象
13.强制垃圾回收对象的方法?
强制通知
System.gc();//对象为空后执行
14.finalize,final,finally的作用?
finalize:垃圾回收机制
final:
类:不能被继承
方法:不能被重写
变量:常量,值不能被改变
finally:必须执行的代码
当遇到System.exits(0)时例外
Collection:List、Set
Map
2.集合接口各自的作用:
Collections类:对集合进行操作
Collection接口:存储对象,可重复
List接口:可重复存储,有序,线性结构
Set接口:不重复的,无序
Map接口:存储键值对,键是唯一的
3.List 实现类有哪些?区别?
ArrayList: 底层技术是数组,遍历和随机访问速度快,
插入和删除效率低;
线程非安全,速度快;
Vector: 线程安全,速度慢;
支持枚举遍历。
LinkedList: 底层是链表
插入 和 删除效率高,遍历和随机访问慢。
4.Set接口实现类有哪些?区别?
HashSet:唯一
可以存null值
数据结构是 哈希表
存储数据唯一原理:
先调用hashCode()方法,值不同,
认为是不同对象可存储;值相同,
再掉用equals()方法比较,相同
认为是相同对象 不能存储,不相同,
则可以存储。
TreeSet:
数据结构 二叉树
可自然升序排序,
可自定义排序重写 compareTo()方法
LinkedHashSet
数据结构是: 链表和哈希表
可存null值
可按添加顺序访问
5.Map接口实现类有哪些?区别?
HashMap:
线程非安全,速度快
可存 null键,null值
如果键相同了,会覆盖之前的值(键是唯一的)
Hashtable
线程安全,速度慢
TreeMap
可按键排序
6.String,StringBuffer,StringBuilder区别?
String:定长 ,new的存在堆中,不是new出来的存在方法区的常量池中
== 判断地址 对象
equals()比较值
concat()连接,创建新的对象
频繁更改字符串的值时:
StringBuffer:线程安全,速度慢
StringBuilder:不安全,慢
7.String类常用的方法?
length()长度
charAt(index)
substring(begin,end):从begin到end-1
8.== 与 equals区别?
== 判断地址 对象
equals()比较值
9.什么是装箱拆箱?8个封装类是什么?
装箱:基本->引用
把值包装成对象
拆箱:引用->基本
把对象中的值取出来
Byte Short Integer Long Float Double Character Boolean
10.什么是序列化和反序列化?
永久性的存储对象
ObjectInputStream 反序列化
ObjectOutputStream 序列化
11.线程的生命周期?
新建 new
就绪
运行
阻塞
区别:
wait():参数可选 ms,放弃了执行权,放弃了锁
sleep():必须带参 ms,放弃了执行权,不放弃锁
死亡
12.实现线程的两种方式?区别?
继承Thread:继承类中所有能继承的方法
实现接口Runnable只有实现run();更有利于资源共享,可以绑定同一对象
13.强制垃圾回收对象的方法?
强制通知
System.gc();//对象为空后执行
14.finalize,final,finally的作用?
finalize:垃圾回收机制
final:
类:不能被继承
方法:不能被重写
变量:常量,值不能被改变
finally:必须执行的代码
当遇到System.exits(0)时例外