美文网首页
Java基础系列25-常用api之StringBuilder类

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

作者: 只是甲 | 来源:发表于2021-08-25 14:02 被阅读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

    相关文章

      网友评论

          本文标题:Java基础系列25-常用api之StringBuilder类

          本文链接:https://www.haomeiwen.com/subject/cfmhultx.html