String类型的延伸

本文介绍了Java中的StringBuilder、StringBuffer和StringJoiner三种字符串操作工具,强调了StringBuilder在频繁修改和拼接操作中的优势,同时提到了StringBuffer的线程安全性和StringJoiner的新特性及其简洁用法。
摘要由CSDN通过智能技术生成

一:StringBuilder

1.StringBuilder代表可变字符串对象,相当于一个容器,它里面装的字符是可以改变的,就是用来操作字符串的。

2.好处:StringBuilder比String更适合做字符串的修改操作,效率会更高,代码也会更简洁。

3.使用

构造器:

StingBuilder() 创建一个空白的可变的字符串对象,不包含任何内容。

StingBuilder(String str) 创建一个指定字符串内容的可变字符串对象。

方法:

append(任意类型) 添加数据并返回StingBuilder对象本身。

reverse() 将对象内容反转。

length() 返回对象内容长度。

toString() 通过toString()就可以把StingBuilder转化为String。

示例:

public class Builder {
    public static void main(String[] args) {
        //StringBuilder s1 = new StringBuilder();
        StringBuilder s1 = new StringBuilder("好好好");
        //1.添加对象。
        s1.append(12);
        s1.append("王凯");
        s1.append(98.5);
        //可支持链式编程。
        s1.append(87).append("蔡建宇").append(98.5);
        //2.获取对象内容长度。
        System.out.println(s1.length());
        //3.对对象内容进行反转。
        System.out.println(s1);
        System.out.println(s1.reverse());
        //4.将对象转化为String类型。
        System.out.println(s1.toString());
    }
}

结果:

二:为何操作字符串建议使用StingBuilder,而不用原来学过的String?

1.对于字符串相关的操作,如频繁的拼接,修改等,建议使用StingBuilder效率更高。

2.注意:如果操作字符串较少,或者不需要操作,以及定义字符串变量,建议还是用String。

示例:

public class BuilderTest {
    public static void main(String[] args) {
        StringBuilder s = new StringBuilder();
        for (int i = 0; i <= 100000; i++) {
            s.append("蔡建宇王凯");
        }
        System.out.println(s);
    }
}

在此类操作下用StringBuilder下运行出结果的时间要远远快于使用String的时间。

三:StringBuffer

1.StringBuffer的用法与StringBuilder是一模一样的。

2.但StringBuiler是线程不安全的,StringBuffer是线程安全的。

四:StringJoiner

1.JDK8开始才有的,与StringBuilder一样,也是用来操作字符串的,也可以看成是一种容器,创建后里面的内容是可变的。

2.好处:不仅能提高字符串的操作效率,并且在有些场景下使用它操作字符串,代码会更简洁。

3.使用

构造器:

StringJoiner(间隔符号) 创建一个StringJoiner对象,指定拼接时的间隔符号。

StringJoiner(间隔符号,开始符号,结束符号) 创建一个StringJoiner对象,指定拼接时的间隔符号,开始符号,结束符号。

方法:

add(添加的内容) 添加数据,并返回对象本身。

length() 返回长度(字符出现的个数)。

toString() 返回一个字符串(该字符串就是拼接之后的结果)。

示例:

import java.util.StringJoiner;

public class Joiner {
    public static void main(String[] args) {
        //设置间隔。
        //StringJoiner s = new StringJoiner(",");
        //设置间隔并且设置开始时的符号与结束时的符号。
        StringJoiner s = new StringJoiner(",","[","]");
        //添加数据。
        s.add("王凯");
        s.add("蔡建宇");
        s.add("马涌泰");
        System.out.println(s);
        //返回字符串中字符的个数。
        System.out.println(s.length());
        //返回一个字符串(该字符串就是拼接后的结果)。
        System.out.println(s.toString());

        int[] arr = {666,888,999};
        System.out.println(getString(arr));
    }
    public static String getString(int[] a){
        StringJoiner s1 = new StringJoiner(",","[","]");
        for (int i = 0; i < a.length; i++) {
            s1.add(a[i] + "");
        }
        return s1.toString();
    }
}

结果:

好处示例:

public class Test {
    public static void main(String[] args) {
        int[] arr = {666,888,999};
        System.out.println(getString(arr));
    }
    public static String getString(int[] a){
        if (a == null){
            return null;
        }
        StringBuilder s = new StringBuilder();
        s.append("[");
        for (int i = 0; i < a.length; i++) {
            if (i == a.length - 1){
                s.append(a[i]).append("]");
            }else {
                s.append(a[i]).append(',');
            }
        }
        return s.toString();
    }
}


public class Joiner {
    public static void main(String[] args) {
        int[] arr = {666,888,999};
        System.out.println(getString(arr));
    }
    public static String getString(int[] a){
        StringJoiner s1 = new StringJoiner(",","[","]");
        for (int i = 0; i < a.length; i++) {
            s1.add(a[i] + "");
        }
        return s1.toString();
    }
}

两者结果相同但使用Joiner操作更为简洁。

C++中的string是一种用于处理字符串的数据类型,它是C语言中的char字符类型延伸string提供了许多函数来方便地进行字符串操作,并且它的空间大小是动态变化的,可以减小不必要的空间浪费。下面我将详细讲解一些常用的string用法。 1. 输入字符串:可以使用cin来输入字符串,遇到空格会停止输入。例如: ```cpp #include <iostream> using namespace std; int main() { string s1, s2; cin >> s1 >> s2; cout << "字符串s1为:" << s1 << endl; cout << "字符串s2为:" << s2 << endl; return 0; } ``` 这段代码中,通过cin输入两个字符串s1和s2,并输出它们的值。 2. 删除最后一个字符:可以使用pop_back函数来删除string中的最后一个字符。例如: ```cpp #include <iostream> #include <string> using namespace std; int main() { string s("hello world"); s.pop_back(); cout << s << endl; return 0; } ``` 这段代码中,我们定义了一个字符串s,并使用pop_back函数删除了最后一个字符,然后输出结果。 3. 分割字符串:可以使用strtok函数来将一个字符串分割成多个子字符串。例如: ```cpp #include <iostream> #include <string> #include <string.h> using namespace std; int main() { string str("Please split this sentence into tokens"); char* cstr = new char\[str.length() + 1\]; strcpy(cstr, str.data()); char* p = strtok(cstr, " "); while (p != 0) { cout << p << endl; p = strtok(NULL, " "); } delete\[\] cstr; return 0; } ``` 这段代码中,我们将字符串str转换为C风格的字符串cstr,并使用strtok函数将其分割成多个子字符串,然后逐个输出。 这些是C++中string的一些常用用法,希望对你有帮助。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [C++中string的用法](https://blog.csdn.net/H1727548/article/details/130840342)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [C++关于string的详细讲解](https://blog.csdn.net/qq_36019007/article/details/128494099)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [【玩转c++】c++ :string类讲解(万字详解)](https://blog.csdn.net/zxf123567/article/details/128261190)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值