您的位置:首页 > 产品设计 > UI/UE

java基础(二)------ String,StringBuffer,StringBuilder有什么区别?

2016-10-29 15:34 966 查看
String,StringBuffer,StringBuilder有什么区别?

 1.String

String是字符串常量,String对象一旦生成就不可改变,重新赋值指向了新的字符串对象,抛弃了原来的字符串对象,线程是安全的。

 2.StringBuffer

StringBuffer是字符串变量,对象内容可以修改,与String相比,不产生新的对象,在内存使用时优于String,操作效率高,支持并发操作,适合在多线程中使用。与String相比,线程是不安全的。

 3.StringBuilder

StringBuilder与StringBuffer原理与操作基本相同,但不支持并发操作,线程是不安全的。但在单线程操作中效率比StringBuffer高。

代码测试:

package test;
/**
* String ,StringBuffer,StringBuilder对比测试
* @author LiamYan
* @author 颜景昌
* 2016-11-8
* 上午8:42:08
*/

public class Test {
public static String yanjingchang = "Liam";
/**
* String测试
*/
public static void StringTest(){
long begin = System.currentTimeMillis();
String str= new String(yanjingchang);
for (int i = 0; i < 100000; i++) {
str = str + "Yan";
}
long end = System.currentTimeMillis();
long time = end - begin;
System.out.println("使用String赋值测试时间为"+time+"毫秒");
}
/**
* StringBuffer测试
*/
public static void  StringBufferTest(){
long begin = System.currentTimeMillis();
StringBuffer sb = new StringBuffer(yanjingchang);
for (int i = 0; i < 100000; i++) {
sb = sb.append("Yan");
}
long end  = System.currentTimeMillis();
long time = end - begin;
System.out.println("使用StringBuffer赋值测试时间为:" + time + "毫秒");
}
/**
* StringBuilder测试
*/
public static void StringBuilderTest(){
long begin = System.currentTimeMillis();
StringBuilder sb = new StringBuilder(yanjingchang);
for (int i = 0; i < 100000; i++) {
sb = sb.append("Yan");
}
long end  = System.currentTimeMillis();
long time = end - begin;
System.out.println("使用StringBuilder赋值测试时间为:" + time + "毫秒");

}

public static void main(String[] args) {
StringTest();
StringBufferTest();
StringBuilderTest();
}

}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐