StringBuffer的主要方法,及其与StringBuilder、String的关系

StringBuffer是线程安全的可变字符串
1. StringBuffer与String的区别
StringBuffer的长度和内容是可变的,而String是不变的。
如果用StringBuffer做字符串的拼接,不会浪费太多的资源。
2. StringBuilder提供一个与StringBuffer兼容的API,但不保证同步,线程不安全,该类被设计用作StringBuffer的一个简单替换,用在字符串缓冲区被单个线程使用的时候,要比StringBuffer更快。
3. String的内容是不可变的,而StringBuffer、StringBuilder都是内容可变的。
4. StringBuffer是同步的,数据安全、多线程、线程安全,但效率低;StringBuilder是不同步的,数据不安全,单线程线程安全,多线程不安全,效率高。
5. StringBuffer和数组的区别:二者都可看作是一个容器,装其他的数据;但是呢,StringBuffer的数据最终是一个字符串的数据;而数组可以放置多种类型的数据,但必须是同一种数据类型。
6. 形式参数问题:
String作为参数传递,效果和基本数据类型作为参数传递是一样的。
StringBuffer作为参数传递,效果等同与引用类型。
7. 形式参数
基本类型:形式参数的改变不影响实际参数。
应用类型:形式参数的改变影响实际参数。
示例代码:

package cn.lgt.stringbuffermethods;

public class StringBufferDemo {
    public static void main(String[] args) {
        System.out.println("StringBufferDemo");
        System.out.println("------------------");
        //StringBuffer类的构造方法
        //StringBufferConstructor.stringBufferConstructor();
        //StringBuffer的添加功能(方法)
        //StringBufferAddMethods.stringBufferAddMethods();
        //StringBuffer的删除功能(方法)
        //StringBufferDeleteMethods.stringBufferDeleteMethods();
        //StringBuffer的替换功能(方法)
        //StringBufferChangeMethods.stringBufferChangeMethods();
        //StringBuffer的反转功能(方法)
        //StringBufferReverse.stringBufferReverse();
        //StringBuffer的截取功能(方法)
        //StringBufferSubstring.stringBufferSubstring();
        //StringBuffer与String之间的相互转换
        StringBufferandString.stringBufferandString();
    }
}

StringBuffer的构造方法

package cn.lgt.stringbuffermethods;

public class StringBufferConstructor {
    public static void stringBufferConstructor(){
        /**
         * 1. StringBuffer()
         * 构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。
         */
        StringBuffer sb1 = new StringBuffer();
        sb1.append("hello");
        System.out.println("sb1 = " + sb1);
        StringBuffer sb2 = new StringBuffer("helloworld");
        System.out.println("sb2 = " + sb2);
        StringBuffer sb3 = new StringBuffer(30);
        sb3.append("helloworldandjava");
        System.out.println("sb3 = " + sb3);
    }
}

StringBuffer的添加功能(方法)

package cn.lgt.stringbuffermethods;

public class StringBufferAddMethods {
    public static void stringBufferAddMethods(){
        //StringBuffer的添加功能(方法)
        StringBuffer sb1 = new StringBuffer();
        sb1.append(10);
        System.out.println("sb1 = " + sb1);
        //插入功能(方法)
        StringBuffer sb2 = new StringBuffer();
        sb2.append("java");
        System.out.println("sb2 = " + sb2);
        //sb2.insert(1, 'x');//插入字符
        sb2.insert(0, "hello");//插入字符串
        System.out.println("sb2 = " + sb2);
        //添加功能的链式编程
        StringBuffer sb3 = new StringBuffer();
        System.out.println("sb3 = " + sb3);//空的内容
        sb3.append(1).append(23).append('x').append("over!");
        System.out.println("sb3 = " + sb3);
    }
}

StringBuffer的删除功能(方法)

package cn.lgt.stringbuffermethods;

public class StringBufferDeleteMethods {
    public static void stringBufferDeleteMethods(){
        //StringBuffer的删除功能
        StringBuffer sb1 = new StringBuffer();
        sb1.append("hellojavaSE");
        System.out.println("sb1 = " + sb1);
        //删除一个指定索引位置的字符
        sb1.deleteCharAt(sb1.length()-1);
        System.out.println("sb1 = " + sb1);

        StringBuffer sb2 = new StringBuffer();
        System.out.println("sb2 = " + sb2);
        sb2.append("StringBuffer_java");
        //delete(int start, int end);//其中删除中包含start,不包含end
        sb2.delete(2, 6);
        System.out.println("sb2 = " + sb2);
    }
}

StringBuffer的替换功能(方法)

package cn.lgt.stringbuffermethods;

public class StringBufferChangeMethods {
    public static void stringBufferChangeMethods(){
        //StringBuffer的替换功能replace()
        StringBuffer sb1 = new StringBuffer();
        sb1.append("hellojavaworld");
        System.out.println("sb1 = " + sb1);
        //replace(int start, int end, String str);//包含start, 不包含end
        sb1.replace(0, 1, "other");
        System.out.println("sb1 = " + sb1);
    }
}

StringBuffer的反转功能(方法)

package cn.lgt.stringbuffermethods;

public class StringBufferReverse {
    public static void stringBufferReverse(){
        //StringBuffer的反转功能(方法)
        StringBuffer sb1 = new StringBuffer();
        sb1.append("helloworldjava");
        System.out.println("sb1 = " + sb1);
        //逆序
        sb1.reverse();
        System.out.println("sb1 = " + sb1);
    }
}

StringBuffer的截取功能(方法)

package cn.lgt.stringbuffermethods;

public class StringBufferSubstring {
    public static void stringBufferSubstring(){
        StringBuffer sb1 = new StringBuffer();
        sb1.append("helloworldjava");
        System.out.println("sb1 = " + sb1);
        //StringBuffer的截取功能(方法)
        //public String substring(int start);
        //其中包括start,不包括end
        //public String sbustring(int start, int end);
        //返回值类型为String类型,而不是StringBuffer类型,原StringBuffer类型的对象不变
        String s1 = sb1.substring(1);
        System.out.println("sb1 = " + sb1);
        System.out.println("s1  = " + s1);
        String s2 = sb1.substring(2, 10);
        System.out.println("s2  = " + s2);
    }
}

StringBuffer与String的相互转换

package cn.lgt.stringbuffermethods;

public class StringBufferandString {
    public static void stringBufferandString(){
        //StringBuffer和String之间的相互转换
        /**
         * 1. String 转换为StringBuffer
         *      a. 通过构造方法转换
         *      b. 通过append()方法转换
         * 2. StringBuffer转换为String
         *      a. 通过构造方法转换
         *      b. 通过toString()方法转换
         */
        //1. String 转换为StringBuffer
        //a. 通过构造方法转换
        String s1 = "java";
        StringBuffer sb1 = new StringBuffer(s1);
        System.out.println("s1 = " + s1);
        System.out.println("sb1 = " + sb1);
        System.out.println("--------------------");
        //String 转换为StringBuffer
        //b. 通过append()方法转换
        String s2 = "hello";
        StringBuffer sb2 = new StringBuffer();
        sb2.append(s2);
        System.out.println("s2 = " + s2);
        System.out.println("sb2 = " + sb2);
        System.out.println("--------------------");
        //2. StringBuffer转换为String
        //a. 通过构造方法转换
        StringBuffer sb3 = new StringBuffer().append("world");
        String s3 = new String(sb3);
        System.out.println("sb3 = " + sb3);
        System.out.println("s3 = " + s3);
        System.out.println("--------------------");
        //2. StringBuffer转换为String
        //b. 通过toString()方法转换
        StringBuffer sb4 = new StringBuffer().append("csdn");
        String s4 = sb4.toString();
        System.out.println("sb4 = " + sb4);
        System.out.println("s4 = " + s4);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值