`
jbm3072
  • 浏览: 209045 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

StringBuffer vs StringBuilder、HashTable vs HashMap、Vector vs ArrayList

    博客分类:
  • Java
阅读更多

在Java的面试题中很有可能问到的问题是StringBuffer和StringBuilder、HashTable和HashMap、Vector和ArrayList的区别。的确,每对类提供的操作基本上一样的。但他们确实有区别。

 

StringBuffer vs StringBuilder

 

StringBuffer 是在JDK1.0中提供的,而StringBuilder的出现是在JDK1.5版本上。在JDK 1.0的时代,那时候为了解决StringBuffer在多线程的混乱问题,StringBuffer大多数的方法都加上了synchronized方法。用天朝的话来说“稳定压倒一切”,只要不出乱子就行。所以没有考虑到效率问题。但后来渐渐发现StringBuffer大多数使用在了非多线程环境中。例如在一个函数中,使用StringBuffer作为临时变量,此时肯定不会存在多线程问题。这时候肯定不会出乱子,而多加的同步干什么?不是影响效率吗?

 

于是到了JDK 1.5,提供了StringBuilder类,与StringBuffer的主要不同,就是不再支持多线程安全。这样提供的两个类StringBufferStringBuilder,一个面向多线程环境,支持线程安全,一个面向单线程环境,效率更高。

 

所以StringBufferStringBuilder的区别在于是否支持线程同步。

 

HashTable vs HashMap Vector vs ArrayList

 

HashTableVectorStringBuffer一样都来自JDK 1.0。他们都是线程安全的。而HashMapArrayList出现在1.2版本上,他们是线程不安全的。这两种类本身没有什么好与不好。关键是在于使用的环境。但从JDK 1.5或者JDK 5之后,在JCF( Java Collections Framework)中提供了线程安全的HashMap(ConcurrentHashMap)ArrayList(CopyOnWriteArrayList)。那么既然有新的类了,也就不需要使用原来的HashTable、Vector了。

 

1
0
分享到:
评论

相关推荐

    JavaSE 笔试 精华

    Collection List LinkedList ArrayList Vector Stack Set HashSet Map HashMap Dictionary Hashtable Comparetor 2. Vector和ArrayList、LinkedList区别? Hashtable 和 HashMap之间的区别 LinkedList内部以链表...

    Java面试中,最常被人问到的几个问题

    1. java.util.*包的UML结构图。 2. Vector和ArrayList、LinkedList区别? Hashtable 和 HashMap之间的区别 3. String、StringBuffer,StringBuilder之间区别。

    史上最全的Java面试题集锦.pdf

    String ,StringBuffer,StringBuilder哪个是安全的 字符串编码的区别,被问到过,我觉得⽐较容易被忽视的⼀个点 什么是泛型,怎么⽤泛型 static能不能修饰threadLocal,为什么,这道题我当时⼀听到其实挺懵逼的 ...

    java8源码-putaoo.github.io:putao.github.io

    (String和StringBuffer、StringBuilder的区别是什么?String为什么是不可变的?、什么是反射机制?反射机制的应用场景有哪些?......) (Arraylist 与 LinkedList 异同、ArrayList 与 Vector 区别、HashMap的底层...

    java8源码-java-start::seedling::seedling::seedling:学习Java语法过程中的一些案例

    (String和StringBuffer、StringBuilder的区别是什么?String为什么是不可变的?、什么是反射机制?反射机制的应用场景有哪些?......) (Arraylist 与 LinkedList 异同、ArrayList 与 Vector 区别、HashMap的底层...

    JAVA面试资料大全-整理.zip

    4、 说出 ArrayList,Vector, LinkedList 的存储性能和特性 5、 Collection 和 Collections 的区别。 6、HashMap 和 Hashtable 的区别。 7、 线程的基本概念、线程的基本状态以及状态之间的关系 8、 abstract class...

    java8集合源码分析-Outline:大纲

    string,stringbuffer和stringbuilder(,,,, ) 伪泛型(, , ) 自动装箱(,) Try-with-resources() 序列化 反序列化(, , , ) interface 和 abstract class 区别 变长参数( ) 枚举详解(, , , , ) Null详解() Java 8 默认...

    javajdk源码学习-JavaSourceLearn:JDK源码学习

    StringBuffer 1 StringBuilder 1 Boolean 2 Byte 2 Double 2 Float 2 Integer 2 Long 2 Short 2 Thread 2 ThreadLocal 2 Enum 3 Throwable 3 Error 3 Exception 3 Class 4 ClassLoader 4 Compiler 4 System 4 ...

    Java面试题.docx

    3、String、StringBuffer、StringBuilder区别 4、什么是内部类?内部类的作用 5、进程和线程的区别 6、final,finally,finalize的区别 7、Serializable 和Parcelable 的区别 8、静态属性和静态方法是否可以被...

    涵盖了90%以上的面试题

    String,StringBuffer,StringBuilder有什么区别 java中的数组是不是对象 数组初始化的方式有哪几种 length属性和length()方法有什么区别 finally块中的代码什么时候被执行 Java中的异常处理机制的简单原理和应用。 ...

    千方百计笔试题大全

    24、String, StringBuffer StringBuilder 的区别。 10 25、Overload 和Override 的区别。Overloaded 的方法是否可以改变返回值的类型? 10 27、描述一下JVM 加载class 文件的原理机制? 10 28、char 型变量中能不能...

    java面试宝典

    24、String, StringBuffer StringBuilder 的区别。 10 25、Overload 和Override 的区别。Overloaded 的方法是否可以改变返回值的类型? 10 27、描述一下JVM 加载class 文件的原理机制? 10 28、char 型变量中能不能...

    Java面试宝典2020修订版V1.0.1.doc

    StringBuffer和StringBuilder区别? 17 21、数组中有没有length()方法,String中有没有length()方法? 18 23、final, finally, finalize的区别。 18 24、‘==’和equals的区别? 18 25、JAVA中Object类中有哪些...

    java面试题,180多页,绝对良心制作,欢迎点评,涵盖各种知识点,排版优美,阅读舒心

    【基础】java中String、StringBuffer、StringBuilder的区别 21 【基础】运行时异常和非运行时异常 参见 21 运行时异常 21 非运行时异常 22 【基础】java引用类型 23 强引用(StrongReference) 23 软引用...

    疯狂JAVA讲义

    9.3.2 String、StringBuffer和StringBuilder类 322 9.3.3 Math类 327 9.3.4 Random类 328 9.3.5 BigDecimal类 330 9.4 处理日期的类 333 9.4.1 Date类 333 9.4.2 Calendar类 334 9.4.3 TimeZone类 337 9.5 ...

Global site tag (gtag.js) - Google Analytics