stringbuffer和stringbuilder和string的区别,简述stringbuffer和stringbuilder有什么区别
无论是做爪哇或是安卓系统,都避免不了遇到这个问题,其实开发过程中一般情况下是不会纠结,这个问题是面试必选经典题,今天有时间,就总结一下。
写爬虫互联网协议(互联网协议)被封了怎么解决?立即使用
StringBuffer、StringBuilder区别
字符串缓冲器与StringBuilder中的方法和功能完全是等价的,只是字符串缓冲器中的方法大都采用了同步的关键字进行修饰,因此是线程安全的,支持并发操作,适合多线程中使用StringBuilder不支持并发操作,线性不安全的,不适合多线程中使用。新引入的StringBuilder类不是线程安全的,但其在单线程中的性能比字符串缓冲器高。(推荐学习:JAVA视频教程)
接下来,我直接贴上测试过程和结果的代码,一目了然:
公共类字符串测试{
公共静态字符串BASEINFO= Y先生
公共静态最终int计数=2000000
/**
* 执行一项线赋值测试
*/
public static void do string test(){
字符串str=新字符串(BASEINFO);
长启动时间=系统。当前时间毫秒();
for(int I=0;我数/100;i ) {
str=str miss
}
结束时间长=系统。当前时间毫秒();
System.out.println((结束时间-开始时间)
米利斯使用字符串时已计算成本。);
}
/**
* 执行一项字符串缓冲器赋值测试
*/
公共静态void dostring缓冲区测试(){
string buffer sb=新字符串缓冲区(base info);
长启动时间=系统。当前时间毫秒();
for(int I=0;我数;i ) {
某人=某人追加(‘小姐’);
}
结束时间长=系统。当前时间毫秒();
System.out.println((结束时间-开始时间)
米利斯在使用字符串缓冲器时已经付出了代价。);
}
/**
* 执行一项StringBuilder赋值测试
*/
public static void doStringBuilderTest(){
StringBuilder sb=new StringBuilder(BASEINFO);
长启动时间=系统。当前时间毫秒();
for(int I=0;我数;i ) {
某人=某人追加(‘小姐’);
}
结束时间长=系统。当前时间毫秒();
System.out.println((结束时间-开始时间)
米利斯在使用StringBuilder时已经付出了代价。);
}
/**
* 测试字符串缓冲器遍历赋值结果
*
* @param mlist
*/
public static void doStringBufferListTest(ListString mlist){
字符串缓冲区sb=新字符串缓冲区();
长启动时间=系统。当前时间毫秒();
for (String string : mlist) {
某人追加(字符串);
}
结束时间长=系统。当前时间毫秒();
System.out.println(sb.toString()缓冲成本:
(结束时间-开始时间)毫秒);
}
/**
* 测试StringBuilder迭代赋值结果
*
* @param mlist
*/
public static void dostringbuilderlistest(ListString mlist){
StringBuilder sb=new StringBuilder();
长启动时间=系统。当前时间毫秒();
for(迭代器字符串迭代器=mlist。迭代器();迭代器。有next();) {
某人(somebody的简写)追加(迭代器。next());
}
结束时间长=系统。当前时间毫秒();
System.out.println(sb.toString()生成器成本:
(结束时间-开始时间)毫秒);
}
公共静态void main(String[] args) {
do string test();
dostring缓冲测试();
doStringBuilderTest();
ListString list=new ArrayList string();
列表。add(“I”);
列表。add( like );
list.add(北京);
list.add(田);
列表。add(“an”);
列表。加(男人);
list.add( . )));
doStringBufferListTest(list);
doStringBuilderListTest(列表);
}
}看一下执行结果:
2711毫时,使用字符串的成本。
使用字符串缓冲器时花费了211毫秒。
使用StringBuilder时花费了141毫秒。
我喜欢北京天安门。缓冲成本:1毫秒
我喜欢北京天安门。建造成本:0毫从上面的结果可以看出,不考虑多线程,采用线对象时(我把计数/100),执行时间比其他两个都要高,而采用字符串缓冲器对象和采用StringBuilder对象的差别也比较明显。由此可见,如果我们的程序是在单线程下运行,或者是不必考虑到线程同步问题,我们应该优先使用StringBuilder类;如果要保证线程安全,自然是字符串缓冲区。
从下面列表的测试结果可以看出,除了对多线程的支持不同,这两个类的用法和结果几乎没有区别。
更多JAVA相关技术文章,请访问JAVA开发教程专栏学习!这就是stringbuffer和stringbuilder区别的细节。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。