
资料内容:
1-8)ArrayList、Vector、LinkedList 的区别及其优缺点?HashMap、HashTable 的区别及优缺点? 
ArrayList 和 Vector 是采⽤数组⽅式存储数据的,是根据索引来访问元素的,都可以 
根据需要⾃动扩展内部数据长度,以便增加和插⼊元素,都允许直接序号索引元素,但 
是插⼊数据要涉及到数组元素移动等内存操作,所以索引数据快插⼊数据慢,他们最⼤ 
的区别就是 synchronized 同步的使⽤。 
LinkedList 使⽤双向链表实现存储,按序号索引数据需要进⾏向前或向后遍历,但 
是插⼊数据时只需要记录本项的前后项即可,所以插⼊数度较快! 
如果只是查找特定位置的元素或只在集合的末端增加、移除元素,那么使⽤ Vector 
或 ArrayList 都可以。如果是对其它指定位置的插⼊、删除操作,最好选择 LinkedList 
HashMap、HashTable 的区别及其优缺点: 
HashTable 中的⽅法是同步的 HashMap 的⽅法在缺省情况下是⾮同步的 因此在多线程环境下需要做额外的同步机制。 
HashTable 不允许有 null 值 key 和 value 都不允许,⽽ HashMap 允许有 null 值 key和 value 都允许 因此 HashMap 使 
⽤ containKey()来判断是否存在某个键。 
HashTable 使⽤ Enumeration ,⽽ HashMap 使⽤ iterator。 
Hashtable 是 Dictionary 的⼦类,HashMap 是 Map 接⼝的⼀个实现类。 
1-9)使⽤ StringBuffer ⽽不是 String 
当需要对字符串进⾏操作时,使⽤ StringBuffer ⽽不是 String,String 是 read-only 的,如果对它进⾏修改,会产⽣临时对象, 
⽽ StringBuffer 是可修改的,不会产⽣临时对象。 
1-10)集合的扩充 
ArrayList list = new ArrayList(90000); list扩充多少次?? 
public ArrayList() { 
this(10); 
} 
默认的扩充是10由此计算 
1-11)java的拆包与封包的问题 
System.out.println("5" + 2); 
521-12)Java中Class.forName和ClassLoader.loadClass的区别 
Class.forName("xx.xx")等同于Class.forName("xx.xx",true,CALLClass.class.getClassLoader()),第⼆个参数(bool)表⽰装载类的时候是否 
初始化该类,即调⽤类的静态块的语句及初始化静态成员变量。 
ClassLoader loader = Thread.currentThread.getContextClassLoader(); //也可以⽤(ClassLoader.getSystemClassLoader()) 
Class cls = loader.loadClass("xx.xx"); //这句话没有执⾏初始化 
forName可以控制是否初始化类,⽽loadClass加载时是没有初始化的。 
 
                