String、StringBuffer、StringBuilder的关系与区别

String:

String对象一旦创建就不能改变,如果通过"+"做连接,是从新开辟了空间来存新的字符串,并把新字符串的引用赋值给了变量,如果需要进行大量的字符串修改操作,应该使用StringBuffer/StringBuilder/字符数组,最终结果都可以转换成String对象。

StringBuffer:

线程安全(同一时刻只能被一个线程操作)的可变字符系列,类似String的字符串缓冲区,通过某些方法调用可以改变该序列的长度和内容。

每个字符串缓冲区都有一定容量,内部缓冲区溢出时,此容量自动增大。

StringBuilder:

JDK5开始,为StringBuffer补充了一个单线程使用的等价类,即StringBuilder。

与StingBuffer相比,通常应该优先使用StringBuilder,它不执行同步,所以速度更快。

常用函数:

1、public int length() 字符串的实际个数

2、public int capacity() 容量

3、public StringBuffer append(String str) 追加

4、public StringBuffer insert(int offset,String str) 

5、public int indexOf(String str)查找指定str的位置

6、public int indexOf(String str,int fromIndex)从fromIndex处开始查找指定str的位置

7、public int lastIndexOf(String str)最后一次出现

8、public StringBuffer reverse() 反转字符串

9、public String toString()

String、StringBuffer、StringBuilder的区别

1、String是不可变字符串,StringBuffer、StringBuilder是可变字符串

2、StringBuffer是线程安全的,StringBuilder是线程不安全的

3、String可以直接使用等号赋值,而StringBuffer、StringBuilder必须采用标准实例化法才行

4、String可以使用加号联结字符串,而StringBuffer、StringBuilder需要使用append()

5、运行速度上:StringBuilder > StringBuffer > String

 

Tips:

1、怎么理解String是不可变字符串?

对String进行操作不是在原有String对象上进行操作,而是重新创建了字符串;

例如 String s="java"; s="hello";是创建了一个新的对象"hello",并把"hello"的引用赋值给了变量s。

2、三者之间的转换关系

String------->StringBuffer/StringBuilder   通过new标准的实例化法

StringBuffer/StringBuilder ------->String   通过调用toString()函数

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值