文章目录
- StringBuilder
- 代码
- 为什么操作字符串建议使用StringBuilder,而不是String?但String还是不可替代的
 
- StringBuffer
- 案例:接收字符串,返回String类型的[11,22]这种形式
- 代码
 
- StringJoiner
- 上面那个案例,用StringJoiner的方法解决
 
StringBuilder
跟String差不多,也是放字符串的。但是是可变的
 下面的方法直接看代码
 
代码
package d13_StringBuilder;
/**
 * @Author: ggdpzhk
 * @CreateTime: 2024-08-24
 */
public class Test {
    public static void main(String[] args) {
        //两个构造方法
        //StringBuilder sb= new StringBuilder("");
        StringBuilder sb1= new StringBuilder("hello");
        //拼接/添加数据 sb.append("world");    做完操作,都是会返回本身  return this;
        sb1.append("world");//String
        System.out.println(sb1);
        sb1.append('a');//char
        System.out.println(sb1);
        //支持链式编程
        sb1.append(3).append(10.3);
        System.out.println(sb1);
        sb1.append(true);//boolean
        System.out.println(sb1);
        sb1.append(new StringBuilder("java"));//StringBuilder
        System.out.println(sb1);
        System.out.println("··················分隔线······························");
        //将对象的内容反转 reverse()  调用这个方法以后本身就会反转
        StringBuilder sb2= new StringBuilder("hello");
        System.out.println(sb2);
        StringBuilder sb2_re =  sb2.reverse();
        System.out.println(sb2);
        System.out.println(sb2_re);
        System.out.println("··················分隔线······························");
        //返回对象的长度 length()
        System.out.println(sb1.length());
        System.out.println(sb2.length());
        //转换为字符串 toString()
        String s1 =  sb1.toString();
        String s2 =  sb2.toString();
        System.out.println(s1);
        System.out.println(s2);
    }
}

为什么操作字符串建议使用StringBuilder,而不是String?但String还是不可替代的
- 对于字符串相关的操作,如频繁的拼接、修改等,建议使用StringBuilder,效率更高。String是不变的,每次修改都是重新指向一个内存,效率低,浪费空间
- 注意: 如果操作字符串较少,或者不需要操作,以及定义字符串变量,还是建议使用String
StringBuffer
- StringBuffer的用法与StringBuilder用法完全一致
- 但SringBuffer线程安全,StringBuilder线程不安全
案例:接收字符串,返回String类型的[11,22]这种形式
代码
package d13_StringBuilder;
/**
 * @Author: ggdpzhk
 * @CreateTime: 2024-08-24
 * 完成数组的遍历,并返回正确String格式 [11,22]
 *  频繁地拼接,所以用StringBUilder
 */
public class Test3 {
    public static void main(String[] args){
        int[] arr = {11,22};
        int[] arr2 = {11,22,33};
        int[] arr3 = {};
        int[] arr4 = null;
        System.out.println(getArratData(arr));
        System.out.println(getArratData(arr2));
        System.out.println(getArratData(arr3));
        System.out.println(getArratData(arr4));
    }
    public static String getArratData(int[] arr){
        if (arr == null){
            return null;
        }
        StringBuilder rs = new StringBuilder("[");
        if (arr.length == 0 ){
            return rs.append("]").toString();
        }
        for (int i = 0; i < arr.length-1; i++) {
            rs.append(arr[i]+",");
        }
        rs.append(arr[arr.length-1]+"]");
        return rs.toString();
    }
}

StringJoiner
与也是放可变字符串的,好处就是在处理拼接字符串时更加方便
 
 添加方法是add(),上面两个是append()
上面那个案例,用StringJoiner的方法解决
package d13_StringBuilder;
import java.util.StringJoiner;
/**
 * @Author: ggdpzhk
 * @CreateTime: 2024-08-24
 * StringJoiner
 */
public class Test4 {
    public static void main(String[] args) {
        int[] arr = {11,22,33};
        System.out.println(getArratData(arr));
    }
    
    public static String getArratData(int[] arr) {
        if(arr == null){
            return  null;
        }
        if (arr.length == 0){
            return "[]";
        }
        StringJoiner rs = new StringJoiner(",","[","]");
        for(int i : arr){
            //注意看这个传值,只能传字符串
//            rs.add(String.valueOf(i));
            rs.add(i+"");
        }
        return rs.toString();
    }
}
StringJoiner在构造函数时三个参数 是 分隔符,首符号,尾符号
 也可以只写间隔符
 



















