美文网首页
24.面向对象进阶:常用API——StringBuilder

24.面向对象进阶:常用API——StringBuilder

作者: 每天起床都想摆 | 来源:发表于2022-01-31 21:20 被阅读0次

StringBuilder

StringBuilder概述

  • StringBuilder是一个可变的字符串类(String是不可变字符串类),我们可以把它看成一个对象容器
  • 作用:提高字符串的操作效率(节约内存,创建更少的对象),如拼接,修改等

StringBuilder构造器

名称(有参构造器&无参构造器) 说明
public StringBuilder() 创建一个空白的可变的字符串对象,不包含任何内容
public StringBuilder(String str) 创建一个指定字符串内容的可变字符串对象

StringBuilder常用方法

方法名称 说明
public StringBuilder append(任意类型) 添加数据并返回StringBuilder对象本身
public StringBuilder reverse() 将对象的内容反转
public int length() 返回对象内容长度
public String toString() 通过toString()就可以实现把StringBuilder转换为String
  • StringBuilder支持链式编程,解读源码可知,append每次获得拼接便返回其本身

    package com.java.apitest;
    
    public class StringBuilderDemo {
        public static void main(String[] args) {
            StringBuilder sb = new StringBuilder();
            sb.append("a");
            sb.append("BC");
            sb.append(1);
            sb.append(0.1);
            sb.append("false");
            System.out.println(sb);
    
            // StringBuilder支持链式编程
            /*
            StringBuilder中append方法的源码:
            @Override
            @IntrinsicCandidate
            public synchronized StringBuffer append(String str) {
                toStringCache = null;
                super.append(str);
                return this;
        }
             */
            StringBuffer sb1 = new StringBuffer();
            System.out.println(sb1.append("a").append("bc").append(3.14));
        }
    }
    
  • StringBuilder只是拼接字符串的手段,效率好,最终还是要恢复成String

    因此需要使用String类型的变量接收StringBuilder的数据,但是类型不兼容,因此需要调用toString()方法

    String result = sb.toString();
    
  • 反转&长度

            // 反转
            StringBuilder sb2 = new StringBuilder();
            System.out.println(sb2.append("首《上海自来水来自上海》尾").reverse());
    
            // 长度
            System.out.println(sb2.length());
    
    

String拼接内存原理图

image.png

StringBuilder拼接内存原理图

image.png

案例需求

  • 打印整型数组内容

    • 需求:设计一个方法用于输出任意整型数组的内容,要求输出如下格式:

      "该数组内容为:[11,22,33,44,55]"

    • 测试代码

      package com.java.apitest;
      
      /**
       * 实现真正的优雅的字符串拼接
       */
      public class Test01 {
          public static void main(String[] args) {
              int[] arr = {1, 2, 3, 4, 5, 6};
              System.out.print("该数组内容为:");
              System.out.println(ArrayAppend(arr));
          }
      
          /**
           * 拼接打印字符串内容
           *
           * @param array
           * @return
           */
          public static String ArrayAppend(int[] array) {
              if (array != null) {
                  StringBuilder sb = new StringBuilder("[");
                  for (int i = 0; i < array.length; i++) {
                      sb.append(array[i]).append(i == array.length - 1 ? "" : ",");   //  中文逗号
                  }
                  sb.append("]");
      
                  return sb.toString();
              }
              return null;
          }
      }
      
      

相关文章

网友评论

      本文标题:24.面向对象进阶:常用API——StringBuilder

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