零基础学Java—StringBuilder类(三十六)

Posted 王同学要努力

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了零基础学Java—StringBuilder类(三十六)相关的知识,希望对你有一定的参考价值。

【零基础学Java】—StringBuilder的原理(三十六)

一、String类

  • 字符串是常量,他们的值在创建之后不能更改
  • 字符串的底层是一个被final修饰的数组,不能改变,是一个常量 private final byte[ ] value;
  • 进行字符串的相加,内存中会有多个字符串,占用空间多,效率低下

二、StringBuilder类

  • 字符串缓冲区,可以提高字符串的操作效率(看成一个长度可以变化的子字符串)
  • 底层也是一个数组,但是没有被final修饰,可以改变长度byte[ ] value=new byte[16 ]
  • StringBuilder在内存中始终是一个数组,占用空间少,效率高,如果超出了 StringBuilder的容量,会自动扩容

三、StringBuilder的构造方法

java.lang.StringBuilder类:字符串缓冲区,可以提高字符串的效率

构造方法:

  • StringBuilder()构造方法不带任何字符的字符串生成器,其初始容量为16个字符
  • StringBuilder(String str)构造一个字符串生成器,并初始化为指定的字符串内容
public class demo07 
    public static void main(String[] args) 
        //空参数构造
        StringBuilder bu1=new StringBuilder();
        System.out.println("bu1:"+bu1);//bu1:

        //带字符串的构造方法
        StringBuilder bu2=new StringBuilder("abc");
        System.out.println("bu2:"+bu2);//bu2:abc
    

四、StringBuffer 方法

public class RunoobTest
    public static void main(String args[])
        StringBuilder sb = new StringBuilder(10);
        sb.append("Runoob..");
        System.out.println(sb);  
        sb.append("!");
        System.out.println(sb); 
        sb.insert(8, "Java");
        System.out.println(sb); 
        sb.delete(5,8);
        System.out.println(sb);  
    



public class demo08 
    public static void main(String[] args) 
        //  创建StringBuilder对象
        StringBuilder bu = new StringBuilder();
        //使用append方法往StringBuilder添加数据
        //StringBuilder bu2=bu.append("abc");//把bu的地址值复制给了bu2
        //System.out.println(bu);//abc
        // System.out.println(bu2);//abc
        //System.out.println(bu==bu2);//true

        //使用append方法无需添加返回值
        //bu.append("abc");
        //bu.append(12);
        // bu.append(true);
        // bu.append(8.9);
        // bu.append('中');
        //System.out.println(bu);//abc12true8.9中

        // 链式编程:方法返回值可以是一个对象,可以继续调用方法

        System.out.println("abc".toUpperCase().toLowerCase().toUpperCase().toLowerCase());

        bu.append("abc").append(1).append(true).append('中').append(9.9);//abc1true中9.9
        System.out.println(bu);
    



五、StringBuilder和String可以相互转换

 /*
 String 》StringBuilder:可以使用StringBuilder的构造方法
 StringBuilder(String str)构造一个字符串生成器 并初始化为指定的字符串的内容

  StringBuilder 》String:可以使用StringBuilder中的toString方法
 */
public class DemoStringBuilder 
    public static void main(String[] args) 
        String str="hello";
        System.out.println("str:"+str);
        StringBuilder letter=new StringBuilder(str);
        //往StringBuilder中添加数据
        letter.append("world");
        System.out.println("bu:"+letter);
        

        //StringBuilder>String
        String s=letter.toString();
        System.out.println(s);
    


以上是关于零基础学Java—StringBuilder类(三十六)的主要内容,如果未能解决你的问题,请参考以下文章

零基础学Java—Calendar类(三十四)

零基础学Java—数学工具类Math(十八)

零基础学Java—内部类的概念与分类(三十)

零基础学Java—File类(五十)

零基础学Java—数组工具类Arrays(十七)

零基础学Java—包装类(三十七)