zoukankan      html  css  js  c++  java
  • StringBuilder类

    StringBuilder类

    4.1 字符串拼接问题

    String类

    ​ 字符串是常量,他们的值再创建后不能更改。

    ​ 字符串底层是一个被final修饰的数组,不可改变,是一个常量

    ​ private final byte[] value;

    ​ 进行字符串的相加,内存中就会有很多个字符串,占用空间多,效率低下:

    比如

    String s = "a"+"b"+"c" = "abc";
    
    "a","b","c"  3个字符串
    "a"+"b" "ab" 1个字符串
    "ab"+"c" "abc" 1个字符串
    

    4.2 StringBuilder类

    字符串缓冲区,可以提高字符串的操作效率(看成一个长度可以变化的字符串)

    底层也是一个数组,但是没有被final修饰,可以改变长度

    byte[] value = new byte[16];

    StringBuilder在内存中始终是一个数组,占用空间少,效率高

    如果超出了StringBuilder的容量,会自动扩容

    4.3 构造方法

    根据StringBuilder的API文档,常用的两个构造方法:

    • public StringBuilder():构造一个空的StringBuilder容器
    • public StringBuilder(String str):构造一个StringBuilder容器,并将字符串添加进去
    public static void main(String[] args){
        // 空参
        StringBuilder bu1 = new StringBuilder();
        System.out.println(bu1);// (空白)
        // 带字符串的构造方法
         StringBuilder bu2 = new StringBuilder("abc");
        System.out.println(bu2);// (abc)
    }
    

    4.4 常用成员方法

    StringBuilder常用的方法有两个:

    • public stringBuilder append(。。):添加任意数据类型的字符串形式,病返回自身

      public static void main(String[] args){
          // 创建StringBuilder对象
          StringBuilder bu1 = new StringBuilder();
          // 使用append方法添加数组
          StringBuilder bu2 = bu1.append("abc");// 把bu1的地址值赋值给了bu2
          Systom.out.println(bu1);// abc
          Systom.out.println(bu2);// abc
          Systom.out.println(bu1 == bu2); // ture
          // 使用appen方法无需接收返回值
          bu1.appen("a");
          bu1.appen("b");
          bu1.appen("c");
          Systom.out.println(bu1);// abc
          
          // 链式编程:方法返回值是一个对象,可以继续调用方法
          bu1.appen("a").appen("b").appen("c");
          Systom.out.println(bu1);// abc
      }
      
    • StringBuilder和string可以相互转换

      • stringbuillder-->String:public String toString():将当前的StringBuilder对象转换为String对象
      • string-->StringBuillder:可以使用StringBuilder的构造方法StringBuilder(String str)构造一个字符串生成器,并初始化指定字符串的内容
    string-->StringBuillder
    public static void main(String[] args){
        // string-->StringBuillder
    
        String str = "hello";
        System.out.println("str"+str);// str
        StringBuilder bu = new StringBuilder(str);
        // 往StringBuilder里添加数据
        bu.append("wold");
         System.out.println("bu"+bu);// helloworld
         
         // stringbuillder-->String
         String s = bu.toString();
         System.out.println("s"+s);// helloworld
    }
    
    • reverse方法

      public static void main(String[] args){
          StringBuilder str = new StringBuilder();
          str.append("j").append("a").append("va");
          str.reverse();
          System.out.println(str);// avaj
      }
      
  • 相关阅读:
    Django contenttypes组件
    Django admin组件使用
    Django 信号
    Django 中间件
    Django 分页组件替换自定义分页
    Django ORM操作补充
    Django ORM 操作2 增删改
    Django 序列化
    JavaScript
    CSS 属性
  • 原文地址:https://www.cnblogs.com/anke-z/p/12495411.html
Copyright © 2011-2022 走看看