StringBuffer知识点

StringBuffer 可以解决拼串的问题
String 类 这个字符串一旦定义好,他的内容和长度就不可改变了
StringBuffer 相当于一个字符容器,他的长度和内容是可变的。


```java
/*  线程安全的可变字符序列。
一个类似于 String 的字符串缓冲区,但不能修改。
虽然在任意时间点上它都包含某种特定的字符序列,
但通过某些方法调用可以改变该序列的长度和内容
*/
        // StringBuffer() 构造一个其中不带字符的字符串缓冲区,初始容量为 16 个字符。

        StringBuffer sb = new StringBuffer();
        int capacity = sb.capacity();
        **System.out.println(capacity); //获取容量**

        **// StringBuffer( int capacity)构造一个不带字符,但具有指定初始容量的字符串缓冲区。**

        StringBuffer sb2 = new StringBuffer(1000);
        int capacity1 = sb2.capacity();
        System.out.println(capacity1);

        //StringBuffer(String str)
        //          构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。

        StringBuffer sb3 = new StringBuffer("abdeasdfasdfasdfasdfassfdasdfasfasfas");
        int capacity2 = sb3.capacity();
        int length = sb3.length();
        **System.out.println(capacity2); //获取容量
        System.out.println(length);//获取长度**

       // OutOfMemoryError ***堆内存溢出***
        long[] ints = new long[900000000];
        System.out.println(ints);

public StringBuffer append (String str):可以把任意类型数据添加到字符串缓冲区里面, 并返回字符串缓冲区本身

 StringBuffer sb = new StringBuffer();
        //往容器中追加内容  使用append
//StringBuffer sb2 = sb.append(100);
 //System.out.println(sb==sb2);
sb.append(100).append(3.14).append("abc");
String s = sb.toString();//StringBuffer 重新了toString() 把容器中的数据拼接成字符串返回
StringBuffer sb2 = sb.insert(2, "hehe");//在指定索引的前面插入内容,返回的还是容器本身
sb.deleteCharAt(3); //根据索引删除容器中的某个字符,返回的还是原来的容器
sb.delete(3,sb.length()); //根据起始索引和终止索引,删除容器中的一段内容 ,返回的还是原来的容器
StringBuffer sb2= sb.replace(0, 3, "AAA");//根据起始索引和 终止索引,替换一段你指定的新内容,返回的还是你原来的容器
		//反转容器中的容
        StringBuffer reverse = sb.reverse(); //返回的还是你原来的容器
         //根据指定的起始索引和结束索引,截取容器中的一段数据,以String类型返回
        String substring = reverse.substring(0, 7);
           //检索该字符串在容器中第一次出现的索引
            int index = sb.indexOf("人");

StringBuffer和String的相互转换

 //方式1:通过toString()
    StringBuffer sb = new StringBuffer();
    sb.append(100);
    String s = sb.toString();
	//方式2   substring(0);
    String s1= sb.substring(0);
    //方式3: 构造
    String s2 = new String(sb);
    //String------StringBuffer
    //方式1 通过构造
    String str="abc";
    StringBuffer sb2 = new StringBuffer(str);
    //方式2
    StringBuffer append = new StringBuffer().append(str);

StringBuffer和StringBuilder的区别:

  1. StringBuffer 线程安全的可变字符序列 效率低
  2. StringBuilder 线程不安全的可变字符序列 效率高

// 基本类型 值传递 String 类型作为参数传递,跟基本类型是一样的
//引用类型 StringBuffer引用传递,形参的改变会影响实参

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值