String 、StringBuilder、 StringBuffer

String类特点:
任何的字符串常量都是String对象,而且String的常量一旦声明则不可改变,如果改变对象内容,改变的是其引用的指向而已。
虽然在很大程度上来讲,String的使用比较简单,但是String这种不可更改的缺点并不好,所以为了方便字符串的修改,专门提供有一个StringBuffer类,而String类里面使用的是“+”来进行的字符串连接,但是这个操作在StringBuffer类里面需要更换为append()方法:
public StringBuffer append(数据类型 b)

例:观察StringBuffer使用
在这里插入图片描述在这里插入图片描述
String 与StringBuffer最大的区别在于:String的内容无法修改,而StringBuffer的内容允许修改。但是需要清楚一点,在开发中优先选择的还是String 类。(StringBuffer只有在频繁修改的时候才会使用)

为了更好的理解String与StringBuffer,那么下面来观察这两个类的继承结构:
String类:
public final class String
extends Object
implements Serializable, Comparable, CharSequence

StringBuffer类:
public final class StringBuffer
extends Object
implements Serializable, CharSequence

可以发现两个类都是“CharSequence”接口的子类。这个接口描述的是字符集,所以字符串就属于字符集的子类。

观察StringBuffer类的构造方法:
public StringBuffer(CharSequence seq)
这里一个小小的问题需要注意:虽然String与StringBuffer都属于CharSequence接口的子类,但是这两个类的对象不能够直接转换。所以如果想要转换,可以采用如下原则:
·String变为StringBuffer:利用StringBuffer的构造、append()方法
在这里插入图片描述
·StringBuffer变为String:所有对象都有一个将对象变为String的方法,使用toString()方法。

实际上StringBuffer还是有一些String类所没有的特点的:

  1. 支持字符串反转:public StringBuffer reverse()
  2. 删除指定范围的数据: public StringBuffer delete(int start, int end)
  3. 插入数据:public StringBuffer inser(int offset, 数据类型 b)
  • 面试题:请解释String 、StringBuilder、 StringBuffer的区别?**
    ·String的内容不可修改,StringBuilder和StringBuffer的内容可以修改。
    ·StringBuffer采用同步处理,属于线程安全操作,而 StringBuilder采用异步处理,属于线程不安全操作。
    StringBuffer类中方法的定义
    StringBuilder类中方法的定义
    总结:
    任何时候优先考虑的还是String ,StringBuilder和StringBuffer只是作为备选方案。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值