JAVA的一些基础知识

  1. String、StringBuffer和StringBuilder的区别是什么?String为什么是不可变的?
  2. String是字符串常量,StringBuffer和StringBuilder是字符串变量;
  3. StringBuffer是线程安全的,因为它的方法都加了sychronized,而StringBuilder是非线程安全的;
  4. String不可变是因为在JDK中String类被声明为final类;
  5. 线程安全会带来额外的系统开销,因此StringBuilder比StringBuffer效率高。

Vector、ArrayList和LinkedList的区别是什么

  1. Vector和ArrayList都是类似数组的形式存储在内存中,LinkedList则是以链表的形式存储;
  2. Vector线程同步,ArrayList和LinkedList是线程不同步的;
  3. LinkedList适合做插入、删除操作,不适合查找;
  4. Vector和ArrayList适合查找,不适合插入删除操作。

HashMap和HashSet

  1. HashMap实现了Map接口,Map接口对键值进行映射,Map中不允许存在重复的键。HashMap允许键和值都为null
  2. HashSet实现了Set接口,它不允许集合中有重复的值。添加元素时,当元素重复时立即返回false,如果不重复成功添加的话返回true。

HashMap和HashTable

  1. HashMap是非线程安全的,并可以接受null(HashMap可以接受为null的键值(key)和值(value),而Hashtable则不行)。
  2. HashTable是线程安全的,由于线程安全会带来额外的系统开销,因此效率没有HashMap高

你可能感兴趣的:(JAVA的一些基础知识)