String、StringBuffer、StringBuilder

String

StringBuffer

StringBuilder

 

JDK1.0

JDK5.0

字符串常量,内容不可变

字符串变量,线程安全

字符串变量,线程不安全

发生改变时,一般是生成一个新的String对象,然后指针指向这个新的对象,所以内容经常改变的对象最好不要用String,因为每次生成新对象的时候,都会对系统的性能会产生影响,尤其是当内存中无引用对象多了之后,jvm的GC垃圾处理机制就会开始运行,从而导致性能下降

由于线程安全,一般用于全局变量,操作一般分为append和insert

由于线程不安全,一般用于方法内或者确认的单线程中使用,操作一般有append和insert

操作少量的数据,用string

多线程操作大量数据,用stringbuffer

单线程操作大量数据,用stringbuilder

不要用string进行+的操作

使用时最好能指定他们的容量(默认是16个字符串),在不确定模块是单线程还是多线程的时候,最好使用StringBuffer

执行速度快

相比于StringBuffer性能提升了10%~15%

 

// 在定义字符串的时候,进行➕的操作效率很快
String s1 = “This is only a” + “ simple” + “ test”;// java complier会自动编译成  String s1 = “This is only a simple test”;  
⬇️执行效率大于StringBuffer
StringBuffer Sb = new StringBuilder(“This is only a”).append(“ simple”).append(“ test”);


// 不要新建String对象,再进行➕的操作
String s2 = “This is only a”;  
String s3 = “ simple”;  
String s4 = “ test”;  
String s1 = s2 + s3 + s4; 
String result = "";
for (String s : hugeArray) {
    result = result + s;
}

// 使用StringBuilder
StringBuilder sb = new StringBuilder();
for (String s : hugeArray) {
    sb.append(s);
}
String result = sb.toString();


// 在进行循环的时候,第一种方法每次遍历都会生成一个新的String对象,所以很消耗性能,

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值