【Java 常用类】java.lang包(7)StringBuilder、StringBuffer类的常用方法




前言

上一篇 【Java 常用类】java.lang包(6)String类的常用方法 里讲了String的常用方法,但是String是不可变的,如果需要操作大量字符拼接时太占用内存空间。

现在讲可变字符序列,StringBuilder、StringBuffer类的常用方法。

因为这两个类方法与使用都基本一样,只是多线程环境下安全与非安全。所以这篇文章就用StringBuilder示例。

一、大纲

一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。
在这里插入图片描述

public final class StringBuilder extends Object implements Serializable, CharSequence

二、使用

1.构造器

1.1 创建

他有不同的构造器用于创建一个可变字符序列StringBuilder。

        StringBuilder sb01 = new StringBuilder(); // 创建一个未初始化的StringBuilder
        StringBuilder sb02 = new StringBuilder("初始化init"); // 创建一个带有初始化字符串的StringBuilder
        StringBuilder sb03 = new StringBuilder(20); // 创建一个指定初始化容量的StringBuilder

2.常用方法

2.1 获取

以下方法可以获取到该StringBuilder中的相关信息。

如:容量、长度、查找字符或字符串出现的位置。

        StringBuilder sb = new StringBuilder("hello");
        // 获取容量
        int c = sb.capacity();
        System.out.println(c); // 21

        // 获取该字符串长度
        int len = sb.length();
        System.out.println(len); // 5

        // 获取字符或字符串第一次出现的位置(从头开始,或从指定位置开始)
        int i = sb.indexOf("e"); // 从头开始
        System.out.println(i); // 1
        int i1 = sb.indexOf("e", 1); // 从指定位置开始
        System.out.println(i1); // 1

        // 获取字符或字符串第一次出现的位置(从尾部开始,或从指定尾部位置开始)
        int li = sb.lastIndexOf("e"); // 从尾部开始
        System.out.println(li); // 1
        int li1 = sb.lastIndexOf("e", 5); // 从指定尾部位置开始
        System.out.println(li1); // 1
        
        // 获取指定索引处的char值
        char ca = sb.charAt(0);
        System.out.println(ca); // h
2.2 追加

append(String str)
将指定的字符串追加到此字符序列。

可以将多种数据类型的值,添加到StringBuilder中。

        StringBuilder sb = new StringBuilder();
        sb.append("hello ");
        sb.append(123);
        System.out.println(sb); // hello 123
2.3 插入 + 移除

insert(int offset, String str)
将字符串插入此字符序列中。

该方法可以将多种数据类型的值,插入到StringBuilder中。

delete(int start, int end)
移除此序列的子字符串中的字符。
deleteCharAt(int index)
移除此序列指定位置上的 char。

这两个方法可以移除指定位置的字符或字符串。

        StringBuilder sb = new StringBuilder("hello");
        // 插入
        sb.insert(sb.length(), "?"); // 尾部插入一个?
        sb.insert(0, '-'); // 首部插入一个-
        System.out.println(sb); // -hello?

        // 移除
        sb.delete(sb.length()-1, sb.length()); // 移除尾部的?
        sb.deleteCharAt(0); // 移除指定索引的字符。移除首部的-
        System.out.println(sb); // hello
2.4 替换(字符)

setCharAt(int index, char ch)
将给定索引处的字符设置为 ch。

将指定索引处的字符设置为新的字符。

        StringBuilder sb = new StringBuilder("hello");
        sb.setCharAt(0, 'H');
        System.out.println(sb); // Hello
2.5 替换(字符串)

replace(int start, int end, String str)
使用给定 String 中的字符替换此序列的子字符串中的字符。

从指定位置开始到指定位置结束,替换成其他的字符串。

        StringBuilder sb = new StringBuilder("hello xxxxx!");

        String s = "world";
        // 用字符串s从索引为6的位置开始替换到索引为11的位置。
        sb.replace(6, 11, s);
        System.out.println(sb); // hello world!
2.6 反转字符串

reverse()
将此字符序列用其反转形式取代。

就是将StringBuilder中的字符串,翻转过来。这个方法还挺常用的。

        StringBuilder sb = new StringBuilder("hello");
        sb.reverse();
        System.out.println(sb); // olleh
2.7 获得子字符串

substring(int start, int end) 、substring(int start)
返回一个新的 String,它包含此序列当前所包含字符的子序列。

从指定位置开始获取该字符串的子字符串。和String一样。

        StringBuilder sb = new StringBuilder("hello");
        String sub = sb.substring(2);
        System.out.println(sub); // llo

        String sub02 = sb.substring(2, 5);
        System.out.println(sub02); // llo

最后

StringBuilder 和 StringBuffer 类用法是一样的,学会任何一个另一个也就会了。

他们两个的好几个方法都和String类是一样的,学过String基本就触类旁通了。

相关

更多常用类请查看:【Java 常用类】目录

发布了110 篇原创文章 · 获赞 127 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_44034328/article/details/104109136