Java之俩SB类

  • 任何的字符串常量都是 String 类的匿名对象,而且 String 的常量一旦声明不可改变,如果改变对象内容,改变的是其引用的指向而已。
  • 所以StringBufferStringBulider两个类就是为了方便字符串的修改(拼接、插入、删除、反转)。

StringBuffer 和 StringBulider 用处差不多,StringBuffer 只是比 StringBuilder 多了个同步关键字synchronized,下述以前者为例。

1. 字符串拼接

在 String 中使用 " + " 来进行字符串连接,但是这个操作在 StringBuffer 类中需要更改为append()方法,append可以接收所有数据类型。

public synchronized StringBuffer append(各种数据类型 b) :字符串拼接

public class SB {
	//为了方便进行字符串内容的修改
    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer();
        sb.append("Hello").append(" world");
        System.out.println(sb);
    }
}

在这里插入图片描述

String 和 StringBuffer 最大的区别在于:String 的内容无法修改,而 StringBuffer 的内容可以修改。频繁修改字符串的情况下建议使用StingBuffer。

2. String与StringBuffer的相互转换

① String => StringBuffer

a. 通过 StringBuffer 的构造方法:public StringBuffer(String str)

b. 通过append(String str)方法

public class SB {
    public static void main(String[] args) {
        String str = "Hello world";
        //通过StringBuffer的构造方法
        StringBuffer sb1 = new StringBuffer(str);
        //通过SringBuffer的append方法
        StringBuffer sb2 = new StringBuffer();
        sb2.append("Hello world!!!");
        System.out.println(sb1);
        System.out.println(sb2);
    }
}

在这里插入图片描述
② StringBuffer => String

调用toString()方法

public class SB {
    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer("Hello world");
        //通过toString方法
        System.out.println(sb.toString());
    }
}

在这里插入图片描述

3. StringBuffer的独有方法

① 字符串反转reverse()

② 删除指定位置字符串delete(int start, int end) ,左闭右开区间

③ 在指定位置插入任意元素insert(int offset, 各种数据类型 b)

public class SBDuYou {
    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer("Hello world");
        System.out.println(sb.reverse()); 
        System.out.println(sb.delete(0, 5)); 
        System.out.println(sb.insert(0, 123)); 
    }
}

在这里插入图片描述

面试题:请解释String与StringBuffer、StringBuilder的区别。
a. String类是常量内容不可修改,而StringBuffer与StringBuilder的内容可以修改。
b. StringBuffer使用同步处理,线程安全,性能较低;StringBuilder使用异步处理,线程不安全,性能较高。在普遍情况下,推荐使用StringBuilder
c. 当String对象使用“+”进行字符串拼接时,Javac编译器会将String对象变为StringBuilder而后调用append()方法来修改字符串内容,减少无用空间的开辟。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值