66-StringBuilder

77 阅读2分钟
使用String进行字符串的大量拼接时,产生大量垃圾,效率低
使用StringBuilder字符串的大量拼接时,产生垃圾少,效率高
      ==的使用:  1.基本类型: 比较的是具体的数据值是否相同
            2.引用类型: 比较的是地址值是否相同
            发现结果都是true: 说明引用变量sb/sb2/sb3 保存的地址值相同,操作的是同一个对象    
StringBuilder类的成员方法(没有static修饰,必须使用StringBuilder类的对象调用)
     append(...)添加任意类型数据的字符串
     reverse() 返回反转的字符序列
     toString()将当前StringBuilder对象转换为String对象
      //构造一个StringBuilder容器,并将方法参数字符串str添加进去
        StringBuilder sb2 = new StringBuilder("HelloWorld");
 StringBuilder类支持链式编程的 
   public class Demo02StringBuilderMethod {
    public static void main(String[] args) {
        //创建StringBuilder类的对象
        StringBuilder sb = new StringBuilder();
        //构造一个StringBuilder容器,并将方法参数字符串str添加进去
        StringBuilder sb2 = new StringBuilder("HelloWorld");
        //append方法:把数据原样添加到StringBuilder容器中
        打印引用类型变量,默认调用toString方法(帮助我们把数据转换成字符串的形式)
        System.out.println(sb2.toString());//HelloWorld
        sb.append(97) .append('a') .append("hello").append(true); //链式编程
        System.out.println(sb); 
        //reverse方法: 实现StringBuilder容器内部的内容进行反转的
        sb.reverse(); 
        System.out.println(sb); 
        //toString方法: 把StringBuilder对象转换成String对象
        String s = sb.toString();
        System.out.println(s);
    }
}  
/*
    StringBuilder和String相互转换
        1.String 转成 StringBuilder
            构造方法:
                public StringBuilder(String s):
                    把String类型的方法参数s,通过构造方法转换成StringBuilder对象

        2.StringBuilder 转成 String
            成员方法:
                public String toString():
                    把调用方法的StringBuilder对象转换成String
 */
public class Demo04Convert {
    public static void main(String[] args) {
        String s = "ABCDEF";
        System.out.println("反转前: "+s);

        //String 转成 StringBuilder
        StringBuilder sb = new StringBuilder(s);

        //实现反转
        sb.reverse();

        //StringBuilder 转成 String
        s = sb.toString();

        System.out.println("反转后: "+s);
    }
}
/*StringBuilder练习-字符串拼接
    需求: 定义一个方法,把int数组中的数据按照指定格式拼接成一个字符串返回,
        调用该方法,并在控制台输出结果。

    例如   数组为 int[] arr = {1,2,3}; 执行方法后的输出结果为:[1, 2, 3]

    三要素:   1.方法名称:  myToString 2.参数列表:  int[] array
        3.返回值类型: String   */
 public class Demo05PrintArray {
    public static void main(String[] args) {
        //1.定义int数组array,并初始化
        int[] array = {1, 2, 3};

        //2.调用myToString方法传递int数组array,获取字符串结果,保存到String变量str中
        String str = myToString(array);

        //3.打印str
        System.out.println("数组内容: "+str);

        System.out.println(Arrays.toString(array));
    }

    //定义myToString方法,获取int数组对应的String内容
    public static String myToString(int[] array) {
        //1.定义StringBuilder变量sb,初始化值"["
        StringBuilder sb = new StringBuilder("[");

        //2.使用for循环遍历数组
        for (int i = 0; i < array.length; i++) {
            //2.1 把当前元素拼接到变量sb中
            sb.append(array[i]);

            //2.2 如果2.1中拼接的不是最后一个元素
            if (i != array.length - 1) {
                //2.2.1 拼接", "到变量sb中
                sb.append(", ");
            }
        }
        //3.for循环结束后,把"]"拼接到sb中
        sb.append("]");

        //4.把StringBuilder对象sb转换成String对象并返回
        return sb.toString();
    }
}