Java基础系列25-常用api之StringBuilder类

2021-08-25  本文已影响0人  只是甲

一.StringBuilder类概述

api文档:


image.png

StringBuilder类概述:
  StringBuilder:是一个可变的字符串。字符串缓冲区类。

String和StringBuilder的区别:
  String的内容是固定的
  StringBuilder的内容是可变的

String类+=拼接字符串耗费内存原因:
  String类的+=每次拼接都会产生新的字符串对象
  而利用StringBuilder来拼接字符串自始至终用的都是同一个StringBuilder容器

二.StringBuilder类案例

2.1 StringBuilder类的构造方法

构造方法
 public StringBuilder()
 public StringBuilder(String str)

代码:

package Java_study;

/**
 * 
 * @author  只是甲
 * @date    2021-06-30
 * @remark  StringBuilder类的构造方法
 *
 */
public class stringbuilder1 {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        System.out.println("sb:" + sb);//sb:
        System.out.println(sb.length());//0
        
        //public StringBuilder(String str)
        StringBuilder sb2 = new StringBuilder("helloWorld");
        System.out.println("sb2:" + sb2);
        System.out.println(sb2.length());

    }

}

测试记录:

sb:
0
sb2:helloWorld
10

2.2 SB类三个常用API、链式编程

public String toString()
  返回此序列中数据的字符串表示形式。
public StringBuilder append(任意类型)
  添加数据,并返回对象本身
public StringBuilder reverse()
  反转字符串,并返回对象本身。


image.png image.png image.png

代码:

package Java_study;

/**
 * 
 * @author 只是甲
 * @date   2021-06-30
 * @remark StringBuilder类的3个常用API、链式编程
 *
 */
public class stringbuilder2 {
    public static void main(String[] args) {
        
        /*A.转字符串功能
        public String toString():返回此序列中数据的字符串表示形式。*/
        StringBuilder sb1 = new StringBuilder("abc");
        String s1 = sb1.toString();
        
        /*B.添加功能
         public StringBuilder append(任意类型):添加数据,并返回对象本身。*/
        //将sb地址赋值给sb3
        StringBuilder sb2 = new StringBuilder();
        StringBuilder sb3 = sb2.append("hello");
        System.out.println("sb2:" + sb2);//sb2:hello
        System.out.println("sb3:" + sb3);//sb3:hello
        System.out.println(sb2 == sb3);//比较地址值: 相等 true
        
        StringBuilder sb4 = new StringBuilder();
        sb4.append("hello");
        //append(任意类型)
        sb4.append(true);
        sb4.append(100);
        System.out.println("sb4:" + sb4);//sb4:hellotrue100
        
        //链式编程(每个.append前面所有内容都是一个对象整体)
        StringBuilder sb5 = new StringBuilder();
        sb5.append("hello").append("world").append(true).append(100);
        System.out.println("sb5:" + sb5);//sb5:helloworldtrue100
        
        /*C.反转功能
        public StringBuilder reverse()*/
        sb5.reverse();
        System.out.println("sb5.reverse():" + sb5);//sb5.reverse():001eurtdlrowolleh
    }

}

测试记录:

sb2:hello
sb3:hello
true
sb4:hellotrue100
sb5:helloworldtrue100
sb5.reverse():001eurtdlrowolleh

2.3 SB类与String类转换

StringBuilder和String的相互转换:
  A.StringBuilder --> String
    public String toString():通过toString()就可以实现把StringBuilder转换为String

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

代码:

package Java_study;

/**
 * 
 * @author  只是甲
 * @date    2021-07-01
 * @remark  StringBuilder和String通过方法完成相互转换
 *
 */
public class stringbuilder3 {
    public static void main(String[] args) {
        
        //StringBuilder --> String
        StringBuilder sb1 = new StringBuilder();
        sb1.append("hello");
        
        //错误做法 直接将对象赋值给字符串基本类型 String s1 = sb1;
        //正确做法 使用StringBuilder的toString()返回字符串 String s1 = sb1.toString();
        String s1 = sb1.toString();
        System.out.println(s1);
        
        //String --> StringBuilder
        String s2 = "hello";
        StringBuilder sb2 = new StringBuilder(s2);
        System.out.println(sb2);
    }

}

测试记录:

hello
hello

2.4 SB类从数组拼接字符串

需求:
  把数组拼接成一个字符串
  举例:int[] arr = {1,2,3};
  输出结果:[1, 2, 3]

分析:
  A:定义一个int类型的数组
  B:写方法实现把数组中的元素按照指定的格式拼接成一个字符串
  C:调用方法
  D:输出结果

代码:

package Java_study;

/**
 * 
 * @author  只是甲
 * @date    2021-07-01
 * @remark  利用StringBuilder把数组拼接成一个字符串
 *
 */
public class stringbuilder4 {
    public static void main(String[] args) {
        //定义一个int类型的数组
        int[] arr = {1,2,3};
        
        //写方法实现把数组中的元素按照指定的格式拼接成一个字符串
        //调用方法
        String result = arrayToString(arr);
        
        //输出结果
        System.out.println("result:" + result);//result:[1,2,3]
    }
    
    /**
     * @remark 将int类型数组中的元素按照指定的格式拼接成一个字符串的方法
     * @param  arr int类型数组
     * @return 特定格式字符串
     */
    public static String arrayToString(int[] arr) {
        StringBuilder sb = new StringBuilder("[");
        
        for (int i = 0; i < arr.length; i++) {
            sb.append(arr[i]);
            //如果不是最后一个元素,则再拼个逗号,
            if (i != arr.length -1) {
                sb.append(",");
                //如果是最后一个元素,则再拼个又括号
            } else {
                sb.append("]");
            }
        }
        //通过StringBuilder的toString返回字符串类型
        return sb.toString();
    }

}

测试记录:

result:[1,2,3]

2.5 SB类的字符串反转

需求:
  把字符串反转
  举例:键盘录入”abc”
  输出结果:”cba”

分析:
  A:键盘录入一个字符串数据
  B:写方法实现字符串数据的反转
    String -- StringBuilder -- reverse() -- String
  C:调用方法
  D:输出结果

代码:

package Java_study;

import java.util.Scanner;

/**
 * 
 * @author  只是甲
 * @date    2021-07-01
 * @remark  利用StringBuilder完成字符串反转
 *
 */
public class stringbuilder5 {
    public static void main(String[] args) {
        //键盘录入一个字符串数字
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        String s = sc.nextLine();
        
        //写方法实现字符串数据的反转
        
        //调用方法
        String result = myReverse(s);
        
        //输出结果
        System.out.println("result:" + result);
    }
    
    /**
     * @remark 利用StringBuilder完成字符串反转
     * @param s 原字符串
     * @return 翻转后的字符串
     */
    public static String myReverse(String s) {
        return new StringBuilder(s).reverse().toString();
    }

}

测试记录:

请输入一个字符串:
zqs
result:sqz

参考:

  1. https://blog.csdn.net/qq_43529621/article/details/115379095
上一篇下一篇

猜你喜欢

热点阅读