Java String Builder

StringBuilder概述

StringBuilder是一个可变字符类,可以想象为一个容器可提供字符串操作效率。

StringBuilder构造方法

StringBuilder.append​(String str)

Describe :将指定的字符串追加到此字符序列

StringBuilder stringBuilder = new StringBuilder();
//链式编程如果一个方法返回是对象类型。对象就可以继续向下调用方法
StringBuilder StringBuilderDate = stringBuilder.append("Curry").append("wqy").append("java");
System.out.println(StringBuilderDate);

StringBuilder.reverse()

Describe:导致此字符序列被序列的反向替换

StringBuilder stringBuilder = new StringBuilder();
StringBuilder StringBuilderDate = stringBuilder.append("Curry").append("wqy").append("java");
System.out.println("反转前:"+StringBuilderDate);
StringBuilderDate.reverse();
System.out.println("反转后:"+stringBuilder);

StringBuilder.Length()

Describe:返回长度(字符数)。

StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("安抚").append("发啊发").append("刚刚");
System.out.println("字符个数为:"+stringBuilder.length());

StringBuilder优缺点

StringBuilder 是 Java 中用于构建字符串的一个非常有用的类。它属于可变序列,实现了 CharSequence 接口,并允许我们通过追加、插入和删除操作来修改字符串内容

优点

可变StringBuilder 允许你在不创建新对象的情况下修改其内容。这使得它在构建大量动态字符串时非常高效。

性能:相比字符串拼接(使用 + 运算符),StringBuilder 的性能更高。字符串拼接在每次操作时都会创建新的字符串对象,而 StringBuilder 则通过内部字符数组来避免这种不必要的对象创建和内存分配。

易于使用StringBuilder 提供了一系列方法,如 append()insert()delete()replace() 等,使得构建和修改字符串变得非常简单。

缺点

不透明性StringBuilder 内部使用字符数组来存储数据。这个内部实现对于使用者来说是透明的,但在某些情况下,你可能需要直接访问或操作这个数组。然而,StringBuilder 没有提供直接访问其内部数组的方法,这可能会限制其在某些特定场景下的使用。

不可变性缺失:Java 中的 String 对象是不可变的,这意味着一旦创建了一个字符串,就不能修改它的内容。这种不可变性在某些情况下是有益的,因为它可以确保字符串在多个地方被引用时始终保持一致。而 StringBuilder 的可变性可能使得在某些需要保证字符串内容一致性的场景中出现问题。

线程不安全:虽然这在某些情况下可以被视为一个优点(因为它提高了性能),但在多线程环境中使用 StringBuilder 可能会导致数据不一致或其他并发问题。如果你需要在多线程环境中使用可变字符串构建器,那么应该使用 StringBuffer

ProJect Csae(项目案例)

对称字符串

        //扫描去获取用户输入date
        Scanner scanner  =  new Scanner(System.in);
        System.out.println("请输入:");
        //接受用户输入数据
        String useerdate = scanner.nextLine();
        //将字符串封装为StringBuilder对象 后续调用反正字符串
        StringBuilder stringBuilder = new StringBuilder(useerdate);
        //将StringBuilder转为String
        String reverses = stringBuilder.toString();
        //调用StringBuilder类中reverse
        stringBuilder.reverse();
        if (useerdate.equals(reverses)){
            System.out.println("ok");
        }else{
            System.out.println("rerr");
        }

ProJect Csae Two(项目案例)

拼接字符串

 public static void main(String[] args) {
        int[] arraydate = {1, 2, 3};
        StringBuilder stringBuilder = new StringBuilder();
        String mains = arraytoString(arraydate);
        System.out.println(mains);
    }

    public static String arraytoString(int[] arraydate) {
        StringBuilder stringBuilder = new StringBuilder("[");
        for (int i = 0; i < arraydate.length; i++) {
            if (i == arraydate.length - 1) {
                stringBuilder.append(arraydate[i] + "]");
            } else {
                stringBuilder.append(arraydate[i] + ", ");
            }
        }
        return stringBuilder.toString();
    }
}

猜你喜欢

转载自blog.csdn.net/EverythingDone/article/details/137355080