java--StringBuffer类和StringBuilder类

StringBuffer类和StringBuilder类

StringBuffer类

  我们如果对字符串进行拼接操作时,每次拼接,都会构建一个新的String对象(如:String a="c"+"b",会在常量池中存储c、b以及cb这三个值,一共开辟了三个空间),既耗时,又浪费空间,而StringBuffer就可以解决这个问题,同时它还是一个线程安全的可变字符序列。

StringBuffer类的常用方法

public StringBuffer()无参构造方法
public StringBuffer(int capacity)指定容量的字符串缓冲区对象
public StringBuffer(String str)指定字符串内容的字符串缓冲区对象
public int capacity()返回当前容量 (理论值)
public int length()返回字符串长度(实际值)
public StringBuffer append(String str)可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身
public StringBuffer insert(int offset,String str)在指定位置把任意类型的数据插入到字符串缓冲区里,并返回字符串缓冲区本身
public StringBuffer deleteCharAt(int index)删除指定位置的字符,并返回本身
public StringBuffer delete(int start,int end)删除从指定位置开始到指定位置结束的内容,并返回本身
public StringBuffer replace(int start,int end,String str)从start开始到end用str替换
public StringBuffer reverse()字符串反转
public String substring(int start)从指定位置截取到末尾
public String substring(int start,int end)从指定位置开始到指定位置结束截取(含头不含尾)

StringBuffer和String的相互转换

	String -- StringBuffer
		a:通过构造方法
		b:通过append()方法
	StringBuffer -- String
		a: 使用substring方法
		b:通过构造方法
		c:通过toString()方法

代码演示

 把字符串反转
import java.util.Scanner;
public class Reverse {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入字符串:");
        String n = sc.next();
        
        //创建一个带有字符串的StringBuffer缓冲区对象
        StringBuffer buffer = new StringBuffer(n);
        
        //buffer.capacity()是缓冲区的容量,可以改变
        System.out.println("容量为:"+buffer.capacity());
        
        //deleteCharAt(0)是删除0位置的元素,返回缓冲区本身
        StringBuffer b = buffer.deleteCharAt(0);
        System.out.println("删除0位置元素后:"+b);
        
        //length()缓冲区中字符串长度
        int l = b.length();
        System.out.println("删除后的字符串长度:"+l);
        
		System.out.println("请输入要插入的位置:");
        int i = sc.nextInt();
        System.out.println("请输入要插入的字符串:");
        //insert(元素位置,插入的字符串 )在指定的位置插入指定字符串,
        //这里写b和 buffer都可以,因为都是一个对象
        StringBuffer in = buffer.insert(i,sc.next() );
        System.out.println("插入字符串后的字符串:"+in);
        
        //调用reverse()方法反转字符串
        StringBuffer r = buffer.reverse();
        System.out.println("反转后:"+r);
    }
}

结果

请输入字符串:
爱生活,爱java
容量为:25
删除0位置元素后:生活,爱java
删除后的字符串长度:8
请输入要插入的位置:
0
请输入要插入的字符串:
爱
插入字符串后的字符串:爱生活,爱java
反转后:avaj爱,活生爱

StringBuilder类

  StringBuilder类也是一个可变的字符序列,它的常用方法与StringBuffer类的相同,它与StringBuffer类类的区别在于,它是不保证同步(线程不安全)以及比StringBuffer类速度快。

代码演示

把字符串反转
import java.util.Scanner;
public class Reverse {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入字符串:");
        String n = sc.next();
        
        //创建一个带有字符串的StringBuilder缓冲区对象
        StringBuilder sb = new StringBuilder(n);
        
		//sb.capacity()是缓冲区的容量,可以改变
         System.out.println("容量为:"+sb.capacity());
         
         //deleteCharAt(0)是删除0位置的元素,返回缓冲区本身
        StringBuilder b = sb.deleteCharAt(0);
        System.out.println("删除0位置元素后:"+b);
        
        //length()字符串长度
        int l = b.length();
        System.out.println("删除后的字符串长度:"+l);
        
        System.out.println("请输入要插入的位置:");
        int i = sc.nextInt();
        System.out.println("请输入要插入的字符串:");
        //insert(位置,字符串 )在指定位置插入字符串,这里写b和 sb都可以, 因为都是一个对象
        StringBuilder in = b.insert(i,sc.next() );
        System.out.println("插入字符串后的字符串:"+in);
        
        //调用reverse()方法反转字符串
        StringBuilder r = sb.reverse();
        System.out.println("反转后:"+r);
    }
}

结果

请输入字符串:
我爱你
容量为:19
删除0位置元素后:爱你
删除后的字符串长度:2
请输入要插入的位置:
0
请输入要插入的字符串:
我
插入字符串后的字符串:我爱你
反转后:你爱我
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值