Java之String、StringBuffer和StringBuilder的区别
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
开发工具与关键技术:MyEclipse10,java
撰写时间:2019-08-06 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1、String 类对象不可变,一旦修改 String的值就是隐形的重建了一个新的对象,释
放了原 String对象
2、StringBuffer和StringBuilder类是可以通过append()、insert()、reverse()…等方法
来修改值。创建的对象是可变
3、StringBuffer:线程安全的; StringBuilder:线程非安全的
4、字符串连接 String 的 + 比 StringBuffer(StringBuilder) 的 Append() 性能差了很多
5、三者在执行速度方面的比较:StringBuilder > StringBuffer > String
package com.ldb.demo;
/**
* String 是不可变类,一旦 String 对象被创建,包含在对象中的字符序列是不可变的,直到对 象被销毁; StringBuffer 与StringBuilder 对象则是可变的! 举例说明这两个的好处:(不用每次新建对象,效率高!)
*
* @author LDB
*
*/
public abstract class Demo {
public static void main(String[] args) {
String s = "";
long begintime = System.currentTimeMillis();
for (int i = 1; i <= 10000; i++) {
s += i;
}
long endtime = System.currentTimeMillis();
long time = endtime - begintime;
System.out.println("运行时间为:" + time);
@SuppressWarnings("unused")
StringBuffer s1 = new StringBuffer();
s = "";
begintime = System.currentTimeMillis();
for (int i = 1; i <= 10000; i++) {
s = "" + i;
s1 = new StringBuffer(s);
}
endtime = System.currentTimeMillis();
time = endtime - begintime;
System.out.println("运行时间为:" + time);
/*输出:
运行时间为:455
运行时间为:15
可以看得出:StringBuffer 这两个效率相当高!
StringBuffer: 是线程安全的;
StringBuilder: 是线程不安全的,性能高点,推荐使 StringBuilder;(jdk1.5 出现)
StringBuffer 的字符序列是可变的(通过 append 等方法操作)
StringBuffer 和 String 之间的转换;
String toString() 返回此序列中数据的字符串表示形式。
StringBuffer(String str):以指定的字符串创建 StringBuffer 对象。
StringBuffer 方法
public StringBuilder()构造一个不带任何字符的 StringBuilder 对象。
StringBuffer(String str) :构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。
StringBuffer append(Object o) :将指定的任意类型对象追加到此 StringBuffer 对象。
StringBuffer insert(int offset, Object o) :将任意类型参数的字符串表示形式插入此序列中。
StringBuffer delete(int start, int end) :移除此序列的子字符串中的字符。
StringBuffer deleteCharAt(int index): 移除此序列指定位置的 char*/
}
}