第3节StringBuilder类

StringBuilder概述

    public static void main(String[] args) {
        String s="Hello";
        s+="World";
        System.out.println(s);
    }

  如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费内存空间,而这种操作还不可避免。那么有没有一种比较好的方式可以解决这个问题呢?答案是肯定的,我们可以通过Java提供的StringBuilder类就可解决一个问题。

  StringBuilder是一个可变的字符串类,我们可以把它看成是一个容器,这里的可变指的是

  StringBuilder对象中的内容是可变的

 

  String和StringBuilder的区别:

  • String:内容是不可变的
  • StringBuilder:内容是可变的

  StringBuilder构造方法

  public StringBuilder()  创建一个空白可变字符串对象,不含有任何内容

  public StringBuilder(String str)  根据字符串的内容,来创建可变字符串对象

package com.itheima_01;

public class StringBuilderDemo {
    public static void main(String[] args) {
        StringBuilder sb=new StringBuilder();
        System.out.println("sb:"+sb);
        System.out.println("sb.length():"+sb.length());

        StringBuilder sb2=new StringBuilder("hello");
        System.out.println("sb2:"+sb2);
        System.out.println("sb2.length()"+sb2.length());
    }
}

 

StringBuilder的添加和反转方法

   public StringBuilder append(任意类型)  添加数据,并返回对象本身

   public StringBuilder reverse()         返回相反的字符序列

package com.itheima_01;

public class StringBuilderDemo02 {
    public static void main(String[] args) {
        //创建对象
        StringBuilder sb=new StringBuilder();
        StringBuilder sb2 = sb.append("hello");

        System.out.println("sb:"+sb);
        System.out.println("sb2:"+sb2);
        System.out.println(sb=sb2);
    }
}
        sb.append("hello");
        sb.append("world");
        sb.append("java");
        sb.append(100);
        System.out.println("sb:"+sb); 

  //链式编程

    //链式编程
    sb.append("hello").append("world").append("java").append(100);
    System.out.println("sb:"+sb);

  //反转

    //链式编程
    sb.append("hello").append("world").append("java").append(100);
    //反转
    sb.reverse();
    System.out.println("sb:"+sb);

 

StringBuilder和String相互转换

  1、StringBuilder转换为String

  public String toString():通过toString()就可以实现把StringBuilder转换为String

  2、String转换为StringBuilder

  public StringBuilder(String s):通过构造方法就可以实现把String转换为StringBuilder

package com.itheima_01;

public class StringBuilderDemo03 {
    public static void main(String[] args) {
        StringBuilder sb=new StringBuilder();
        sb.append("hello");
        //StringBuilder转换为String
        String s=sb.toString();
        System.out.println(s);
    }
}
        String s1="hello";
        StringBuilder sb2=new StringBuilder(s1);//String转换为StringBuilder
        System.out.println(sb2);

 

案例:拼接字符串

  需求:定义一个方法,把int数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法,

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

package com.itheima_01;
/*
*   需求:定义一个方法,把int数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法,
         并在控制台输出结果。例如,数组为int[] arr={1,2,3};,执行方法后的输出结果为:[1,2,3]
* */

public class StringBuilder04 {
    public static void main(String[] args) {

        int[] arr = {1, 2, 3};
        String s = sb(arr);
        System.out.println(s);
    }

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

 

案例:字符串反转

  需求:定义一个方法,实现字符串反转。键盘录入一个字符串,调用该方法后,在控制台输出结果

    例如:键盘录入abc,输出结果cba

package com.itheima_01;

import java.util.Scanner;

public class StringBuilderDemo05 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一串字符");
        String line = sc.nextLine();
        String s = sb(line);
        System.out.println(s);
    }

    public static String sb(String line) {
        StringBuilder sb = new StringBuilder(line);
        sb.reverse();
        String s = sb.toString();
        return s;
    }
}
 //方法二:
        return new StringBuilder(line).reverse().toString();
   

 

通过帮助文档查看StringBuilder中的方法

  public StringBuilder append(任意类型)    添加数据,并返回对象本身

  public StringBuilder reverse()        返回相反的字符序列

  public String toString()           通过toString()就可以实现把StringBuilder转换为String

 

posted @ 2021-01-28 22:47  Testtext  阅读(85)  评论(0)    收藏  举报