StringBuilder和StringBuffer

因为String类是final的,每次进行修改时实际上都返回的一个新的Stirng实例。频繁修改的话会对系统消耗非常大。Java为我们提供了StringBuilder和StringBuffer两个类

1.StringBuilder和StringBuffer之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。所以并发访问的时候需要使用StringBuffer,要求速度但并不要求线程安全的时候用StringBuilder
接下来说一下StringBuffer的API

2.public StringBuffer append(String s) -> 向StringBuffer实例后面追加字符串并返回该StringBuffer实例

public class Main {
    public static void main(String[] args) {
        StringBuffer sb1 = new StringBuffer();
        sb1.append("aaabbb");
        System.out.println(sb1);
        sb1.append("cccddd");
        System.out.println(sb1);
        //通过toString()将StringBuffer转成String实例
        String str = sb1.toString();
        System.out.println(str);
    }
}
执行结果:
aaabbb
aaabbbcccddd
aaabbbcccddd

3.public delete(int start, int end) -> 删除指定位置之间的字符串

public class Main {
    public static void main(String[] args) {
        StringBuffer sb1 = new StringBuffer();
        sb1.append("aaabbb");
        System.out.println(sb1);
        sb1.delete(1,3);
        System.out.println(sb1);
        
    }
}
执行结果:
aaabbb
abbb

4.insert(int offset, String str) ->向StringBuffer实例中间插入字符串并返回该StringBuffer实例
public class Main {
    public static void main(String[] args) {
        StringBuffer sb1 = new StringBuffer();
        sb1.append("aaabbb");
        System.out.println(sb1);
        sb1.insert(1,"ccc");
        System.out.println(sb1);

    }
}
执行结果:
aaabbb
acccaabbb

5.replace(int start, int end, String str) ->向StringBuffer实例start到end中间替换str字符串并返回该StringBuffer实例
public class Main {
    public static void main(String[] args) {
        StringBuffer sb1 = new StringBuffer();
        sb1.append("aaabbb");
        System.out.println(sb1);
        sb1.replace(1,5,"ccc");
        System.out.println(sb1);

    }
}
执行结果:
aaabbb
acccb

6.public StringBuffer reverse() ->将StringBuffer实例内容反转并返回该StringBuffer实例
public class Main {
    public static void main(String[] args) {
        StringBuffer sb1 = new StringBuffer();
        sb1.append("abcdefg");
        System.out.println(sb1);
        sb1.reverse();
        System.out.println(sb1);

    }
}
执行结果:
abcdefg
gfedcba

7.char charAt(int index) ->返回StringBuffer实例指定索引处的 char 值。

public class Main {
    public static void main(String[] args) {
        StringBuffer sb1 = new StringBuffer();
        sb1.append("abcdefg");
        System.out.println(sb1);
        char c = sb1.charAt(3);
        System.out.println(c);

    }
}
执行结果:
abcdefg
d

8.int indexOf(String str) ->返回StringBuffer实例中第一次出现的目标字符串在该StringBuffer实例中的索引。
public class Main {
    public static void main(String[] args) {
        StringBuffer sb1 = new StringBuffer();
        sb1.append("abcdbcd");
        System.out.println(sb1);
        int i1 = sb1.indexOf("bc");
        //第二个参数表示从下标2开始往后数(包括2)
        int i2 = sb1.indexOf("bc",2);
        System.out.println(i1);
        System.out.println(i2);
    }
}
执行结果:
abcdbcd
1
4

int lastIndexOf(String str)->返回StringBuffer实例中最后一次出现的目标字符串在该StringBuffer实例中的索引。
    public class Main {
    public static void main(String[] args) {
        StringBuffer sb1 = new StringBuffer();
        sb1.append("abcdbcd");
        System.out.println(sb1);
        //只有一个参数表示从最后一位开始往前数
        int i1 = sb1.lastIndexOf("bc");
        //第二个参数表示从下标3开始往前数(包括3)
        int i2 = sb1.lastIndexOf("bc",3);
        System.out.println(i1);
        System.out.println(i2);
    }
}
执行结果:
abcdbcd
4
1

9.void setCharAt(int index, char ch) ->将StringBuffer实例中index位置的字符设置成ch
public class Main {
    public static void main(String[] args) {
        StringBuffer sb1 = new StringBuffer();
        sb1.append("abcdbcd");
        System.out.println(sb1);
        sb1.setCharAt(3,'k');
        System.out.println(sb1);
    }
}
执行结果:
abcdbcd
abckbcd

10.String substring(int start) ->返回一个字符串,内容是StringBuffer实例从start位置截取到最后位置
public class Main {
    public static void main(String[] args) {
        StringBuffer sb1 = new StringBuffer();
        sb1.append("abcdbcd");
        System.out.println(sb1);
        String str1 =sb1.substring(3);
        //第二个参数表示截取的终止位置
        String str2 =sb1.substring(3,5);

        System.out.println(str1);
        System.out.println(str2);
    }
}
执行结果:
abcdbcd
dbcd
db
    

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值