Java--StringBuffer

StringBuffer

  • StringBuffer是一个线程安全的可变字符序列,通俗的可以理解为一个容量可以变化的容器
    -在这里插入图片描述
  • 演示:
    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer(10);//声明了一个容量为10的容器
        StringBuffer sb2 = new StringBuffer("abcd");//声明了一个指定内容的容器
        int cp = sb2.capacity();//返回sb2容器的理论长度
        System.out.println(cp);//20
        int length = sb2.length();//返回sb2的实际长度
        System.out.println(length);//4
    }
}
  • StringBuffer的增删改功能
  • 在这里插入图片描述
  • 演示:
public class demo6 {
    public static void main(String[] args) {
        /**
         * StringBuffer的增部分
         */
        StringBuffer sb = new StringBuffer("abcd");//声明了一个指定内容的容器
        System.out.println(sb);//abcd
        //使用append方法在sb对象中加入数据
        StringBuffer sb2 = sb.append("efg");
        System.out.println(sb2);//abcdefg
        //使用insert方法,在指定位置加入字符串
        StringBuffer sb3 = sb2.insert(0, "java");//javaabcdefg
        System.out.println(sb3);

        /**
         * StringBuffer的删部分
         */
        //使用deleteCharAt方法删除指定位置的元素
        StringBuffer sb4 = sb3.deleteCharAt(0);
        System.out.println(sb4);//avaabcdefg
        //使用delete方法删除指定范围的元素
        StringBuffer sb5 = sb4.delete(0, 3);
        System.out.println(sb5);//abcdefg,删除的时候含头不含尾

        /**
         * StringBuffer的修改部分
         */

        StringBuffer sb6 = sb5.replace(0, sb5.length(), "hello");
        System.out.println(sb6);//hello
        StringBuffer re = sb6.reverse();//对字符串进行翻转
        System.out.println(re);//olleh
        String substring = re.substring(0, 2);
        System.out.println(substring);//ol
        //注意使用substring方法时返回的是String类型的值,不再是StringBuffer了。
    }
}

StringBuffer和String的相互转换

  • StringBuffer–>String
    • 使用substring方法
    • 使用构造方法
    • 使用toString方法
  • 演示:
public class Test1 {
    public static void main(String[] args) {
        /**
         * StringBuffer-->String
         */
        StringBuffer sb = new StringBuffer("abcdefg");
        //通过自身的substring方法
        String str = sb.substring(0);//把sb中的所有内容转为String类型
        //通过toString方法
        String str2 = sb.toString();
        //通过String的构造方法
        String str3 = new String(sb);

        /**
         * String-->StringBuffer
         */
        String s="abcdefg";
        //通过构造方法
        StringBuffer sb2 = new StringBuffer(s);
        //通过append方法
         sb2 = sb2.append(s);
        System.out.println(sb2);//abcdefgabcdefg

    }
}
  • 演示2:通过String和StringBuffer的相互转换实现字符串的反转
public class Reverse {
    public static void main(String[] args) {
        /**
         * StringBuffer中有reverse方法可以将字符串反转
         * 所以我们将string--StringBuffer,调用reverse方法后再反转回来
         */
        String str="hello world";
        StringBuffer sb = new StringBuffer(str);
        String s = sb.reverse().toString();//先进行翻转,再转换为String类型的变量
        System.out.println(s);
    }
}
  • StringBuffer和StringBuider的区别:
    • StringBuffer的线程是安全的,但是频繁的加锁和释放锁导致其性能降低,速度不如StringBuider
    • StringBuider的线程是不安全的,因此速度更快
  • String和StringBuffer的值传递问题:
    • 基本类型作为参数传递:值传递,形参得改变不影响实参 String 他符合值传递得特点
    • 引用类型传递:引用传递,形参得改变会影响实参
  • 演示:
public class Test2 {
    public static void main(String[] args) {
        String str = "hello";
        test(str);
        System.out.println(str); //hello
        StringBuilder sb = new StringBuilder("哈哈");
        test(sb);
        System.out.println(sb); //呵呵哈哈
    }

    private static void test(StringBuilder sb) {
        sb.append("呵呵").reverse();//呵呵哈哈
        System.out.println(sb.toString()); //呵呵哈哈
    }

    private static void test(String s) {
        s += "world";
        System.out.println(s);//helloworld
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值