Java中的String、StringBuffer和StringBuilder的区别
2014-09-03 15:01
435 查看
Java中的String、StringBuffer和StringBuilder的区别
1.String类
首先,它是线程安全的,即可以用于多线程编程中;
其次,String类的对象是不可变的,即在定义时就确定了,类似String str="Hello";str+="Java";的语句其实是生成了新的对象,只是我们未察觉到而已。但是注意在大量的字符串新建对象时消耗就很可观,这时必须考虑采用StringBuffer或StringBuilder,否则会极大地降低程序的效率。
2.StringBuffer类:
首先,它也是线程安全的。
其次,它是可变类,对它指向的字符串的操作都不会产生新的对象。 每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量。因而它的效率要比String高。
。
3.StringBuilder类:
首先,它不是线程安全的,即只能用于单线程编程中。
其次,它跟StringBuffer类似,即其对象也是一个可变的字符序列。但是要注意的是它下面几种构造方法:
StringBuilder():创建一个容量为16的StringBuilder对象;
StringBuilder(int capacity):创建一个容量为capacity的StringBuilder对象;
StringBuilder(String s):创建一个包含s的StringBuilder对象,同时末尾添加16个空元素。
StringBuilder(CharSequence cs):创建一个包含cs的StringBuilder对象,末尾附加16个空元素;
综上可知,在线程同步方面,String和StringBuffer是线程安全的,而StringBuilder不是线程安全的;在执行效率上,StringBuilder>StringBuffer>String,因而在需要大量的进行字符串操作的单线程场合,应该昼使用StringBuilder以提高效率,在大量进行字符串操作的多线程情形,StringBuffer无疑是最佳的选择;而对于少量的字符串操作的单线程或多线程情形下,使用String则更为简单、方便。
1.String类
首先,它是线程安全的,即可以用于多线程编程中;
其次,String类的对象是不可变的,即在定义时就确定了,类似String str="Hello";str+="Java";的语句其实是生成了新的对象,只是我们未察觉到而已。但是注意在大量的字符串新建对象时消耗就很可观,这时必须考虑采用StringBuffer或StringBuilder,否则会极大地降低程序的效率。
2.StringBuffer类:
首先,它也是线程安全的。
其次,它是可变类,对它指向的字符串的操作都不会产生新的对象。 每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量。因而它的效率要比String高。
。
3.StringBuilder类:
首先,它不是线程安全的,即只能用于单线程编程中。
其次,它跟StringBuffer类似,即其对象也是一个可变的字符序列。但是要注意的是它下面几种构造方法:
StringBuilder():创建一个容量为16的StringBuilder对象;
StringBuilder(int capacity):创建一个容量为capacity的StringBuilder对象;
StringBuilder(String s):创建一个包含s的StringBuilder对象,同时末尾添加16个空元素。
StringBuilder(CharSequence cs):创建一个包含cs的StringBuilder对象,末尾附加16个空元素;
综上可知,在线程同步方面,String和StringBuffer是线程安全的,而StringBuilder不是线程安全的;在执行效率上,StringBuilder>StringBuffer>String,因而在需要大量的进行字符串操作的单线程场合,应该昼使用StringBuilder以提高效率,在大量进行字符串操作的多线程情形,StringBuffer无疑是最佳的选择;而对于少量的字符串操作的单线程或多线程情形下,使用String则更为简单、方便。
相关文章推荐
- JAVA中String与StringBuffer 、StringBuilder的区别
- 理解java String,深入解析StringBuffer和StringBuilder的区别
- Java 中的字符串类String、StringBuffer、StringBuilder的区别
- JAVA中String与StringBuffer,StringBuilder应用的区别
- Java 中的字符串类String、StringBuffer、StringBuilder的区别
- java语言中String,StringBuffer,StringBuilder的区别
- Java笔记—String,StringBuffer ,StringBuilder 的区别
- JAVA中String与StringBuffer 、StringBuilder的区别
- Java之String、StringBuffer、StringBuilder的区别
- JAVA---------------String,StringBuffer与StringBuilder的区别??
- Java中String、StringBuilder和StringBuffer的区别
- 【Java基础】String,StringBuffer,StringBuilder之间的区别
- Java中String,StringBuilder和StringBuffer的区别
- JAVA中String与StringBuffer 、StringBuilder的区别
- Java中String,StringBuilder和StringBuffer的区别
- 【java面试题】StringBuilder与StringBuffer和String 的区别
- Java中String, StringBuffer 和 StringBuilder 三个类的区别和联系
- JAVA中String与StringBuffer 、StringBuilder的区别
- Java:String、StringBuffer和StringBuilder的区别
- Java之String、StringBuffer、StringBuilder的区别分析