一、String,StringBuffer, StringBuilder 的区别是什么?String 为什么是不可变的?
答: 1、String 是字符串常量,StringBuffer 和 StringBuilder 都是字符串变量。后两者的字符内容可变,而前者创建后内容不可变。
2、String 不可变是因为在 JDK 中 String 类被声明为一个 final 类。
3、StringBuffer 是线程安全的,而 StringBuilder 是非线程安全的。
ps:线程安全会带来额外的系统开销,所以 StringBuilder 的效率比 StringBuffer 高。如果对系统中的线程是否安全很掌握,可用
StringBuffer,在线程不安全处加上关键字 Synchronize。
二、Vector,ArrayList, LinkedList 的区别是什么?
答: 1、Vector、ArrayList 都是以类似数组的形式存储在内存中,LinkedList 则以链表的形式进行存储。
2、List 中的元素有序、允许有重复的元素,Set 中的元素无序、不允许有重复元素。
3、Vector 线程同步,ArrayList、LinkedList 线程不同步。
4、LinkedList 适合指定位置插入、删除操作,不适合查找;ArrayList、Vector 适合查找,不适合指定位置的插入、删除操作。
5、ArrayList 在元素填满容器时会自动扩充容器大小的 50%,而 Vector 则是 100%,因此 ArrayList 更节省空间。
详见:http://www.cnblogs.com/mgod/archive/2007/08/05/844011.html
三、HashTable, HashMap,TreeMap 区别?
答: 1、HashTable 线程同步,HashMap 非线程同步。
2、HashTable 不允许<键,值>有空值,HashMap 允许<键,值>有空值。
3、HashTable 使用 Enumeration,HashMap 使用 Iterator。
4、HashTable 中 hash 数组的默认大小是 11,增加方式的 old*2+1,HashMap 中 hash 数组的默认大小是 16,增长方式一定是 2
的指数倍。
5、TreeMap 能够把它保存的记录根据键排序,默认是按升序排序。
详见:http://www.zlmind.com/?p=679
五、Tomcat,Apache,JBoss 的区别?
评论0
最新资源