StringBuilder和StringBuffer

发布时间:2023年12月17日

StringBuiler的介绍

由于 String 的不可更改特性,为了方便字符串的修改, Java 中又提供 StringBuilder StringBuffer 类。这两个类大部分功能是相同的,这里介绍 StringBuilder 常用的一些方法.
方法
功能
StringBuff append(String str)
在尾部追加,相当于 String += ,可以追加: boolean char char[] 、 double、 float int long Object String StringBuff 的变量
char charAt(int index)
获取 index 位置的字符
int length()
获取字符串的长度
int capacity()
获取底层保存字符串空间总的大小
void ensureCapacity(int
mininmumCapacity)
扩容
void setCharAt(int index, char ch)
index 位置的字符设置为 ch
int indexOf(String str)
返回 str 第一次出现的位置
int indexOf(String str, int
fromIndex)
fromIndex 位置开始查找 str 第一次出现的位置
int lastIndexOf(String str)
返回最后一次出现 str 的位置
int lastIndexOf(String str,
int fromIndex)
fromIndex 位置开始找 str 最后一次出现的位置
StringBuff insert(int
offset, String str)
offset 位置插入:八种基类类型 & String 类型 & Object 类型数据
StringBuffer
deleteCharAt(int index)
删除 index 位置字符
StringBuffer delete(int
start, int end)
删除 [start, end) 区间内的字符
StringBuffer replace(int
start, int end, String str)
[start, end) 位置的字符替换为 str
String substring(int start)
start 开始一直到末尾的字符以 String 的方式返回
String substring(int
start int end)
[start, end) 范围内的字符以 String 的方式返回
StringBuffer reverse()
反转字符串
String toString()
将所有字符按照 String 的方式返回

下面将以上方法用代码进行使用:

public static void main(String[] args) {
        StringBuilder str1 = new StringBuilder("hello");
        StringBuilder str2 = str1;
        // 追加:即尾插-->字符、字符串、整形数字
        str1.append(' ');//hello
        str1.append("wolrd");//hello wolrd
        str1.append("123");//hello wolrd123
        System.out.println(str1);
        System.out.println(str1 == str2);//true
        System.out.println(str1.charAt(0));//获取0号位置上的h字符
        System.out.println(str1.length());//获取字符串的有效长度14
        System.out.println(str1.capacity());//获取底层数组的总大小21
        str1.setCharAt(0,'H');//设置任意位置的字符
        str1.insert(0,"Hellowolrd!!!");//Hellowolrd!!!Hello wolrd123
        System.out.println(str1);
        System.out.println(str1.indexOf("Hello"));//获取Hello第一次出现的位置
        System.out.println(str1.lastIndexOf("Hello"));//获取Hello最后一次出现的位置
        str1.deleteCharAt(0);//删除首字符
        str1.delete(0,5);//删除[0,5)之间的字符

        String sb1 = str1.substring(0,5);//截取[0,5)范围内的字符以String的方式返回
        str1.reverse();//将字符串逆转
        sb1 = str1.toString();//将StringBuilder以String形式返回

    }
从上述例子可以看出: String StringBuilder 最大的区别在于 String 的内容无法修改,而 StringBuilder 的内容可 以修改 。频繁修改字符串的情况考虑使用 StringBuilder
注意: String StringBuilder 类不能直接转换。如果要想互相转换,可以采用如下原则 :
String 变为 StringBuilder: 利用 StringBuilder 的构造方法或 append() 方法
StringBuilder 变为 String: 调用 toString() 方法.

1. StringStringBufferStringBuilder的区别

String 的内容不可修改, StringBuffer StringBuilder 的内容可以修改 .
StringBuffer StringBuilder 大部分功能是相似的
StringBuffer 采用同步处理,属于线程安全操作;而 StringBuilder 未采用同步处理,属于线程不安全操作.
文章来源:https://blog.csdn.net/weixin_69762204/article/details/135032818
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。