1.String
String 类是final的,一旦赋值,内存空间不能改变
StringBuffer类用于内容可以改变的字符串,是线程安全的
StirngBuilder是线程不安全的
Stringbuffer初始容量为为16,扩容是旧容量的2倍加2
StringTokenizer 将字符串分段
2
.Vector容量初始为10,每满增加10
Enumeration 接口,vector 与 enumeration搭配使用,vector是同步的
注意equals(0(内容比较)和hashCode()(地址比较)方法的重写
vector只调用了equals方法
3. Enumeration和Iterator的区别
方法名称不同,变短
Iterator remove方法是所有删除集合类元素唯一安全的方法
4. hashtable和hashmap都实现了map接口,但hashtable继承了Dictionary
hashmap中,null可以作为键,但只能有一个,作为值,可以有多个,hashtable不能存在null值和null键
hashtable同步,hashmap不同步
hashtable中hash数组的默认大小是11,增加方式是old*2+1
hashmap中的hash数组默认大小是16,而且一定是2的指数
不同步变成同步的方法:
Collections类的synchronizedCollection方法
remove,containsKey--->hashcode equals
containsValue --->equals
get --->hashcode 这些需要比较key是否以前put过
但是在容器自己在遍历时是不需要进行比对的
5
.ArrayList不同步,初始容量为10;
Collection接口是所有集合类的父类,元素无顺序,可以重复,可以存多个null
set接口:元素无顺序,不能重复,只能存一个null
list接口:元素有顺序,能重复,可以存多个null
collections类操作集合类
Array读快改慢
Linked改快读慢
Hash两者之间
Stack 栈 先进后出 此类实现了list接口
Queue 队列 先进先出
linkedlist双向链表,可以模拟栈和队列
6
. System类是final类型
System.arrayCopy
Runtime类封装了Java命令本身所启动的实例进程
不能创建Runtime实例,只能通过Runtime.getRuntime获取正在运行的Runtime对象
7
. 浅层克隆:
实现Cloneable接口
重写Object clone
在方法内部 super.clone()
深层克隆:含有引用变量的克隆