StringBuilder类及其构造方法和toString方法

String类

字符串是常量,他们的值在创建之后不能更改
字符串的底层是一个被final修饰的数组,不能改变,是一个常量
private final byte[] value;

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

比如:String s = “a”+“b”+“c” = “abc”;

StringBuilder类!

java.lang.StringBuilder类:

字符串缓冲区,可以提高字符串的操作效率(看成一个长度可以变化的字符串)
底层也是一个数组,但是没有被final修饰,可以改变长度
byte[] value = new byte[16];

构造方法

StringBuilder()构造一个不带任何字符的字符串生成器,其初始容量为16个字符

        //空参构造方法
        StringBuilder bu1 = new StringBuilder();
        System.out.println("bu1:"+bu1);//bu1: 

StringBuilder(String str)构造一个字符串生成器,并初始化为指定的字符串内容

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

成员方法

public StringBuilder append(...):添加任意类型数据的字符串形式,并返回当前对象自身

        //创建StringBuilder对象
        StringBuilder bu = new StringBuilder();
        //使用append方法往StringBuilder中添加数据
        //append方法返回的是this,调用方法的对象bu,this==bu
        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('中');
        bu.append(11);
        bu.append(0.0);
        bu.append(true);
        System.out.println(bu);//abc中110.0true

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

System.out.println("abc".toUpperCase().toLowerCase().toUpperCase().toLowerCase());//abc
        
bu.append("abc").append(1).append('中').append(8.8).append(true);

System.out.println(bu);//abc1中8.8true

StringBuilder类的toString方法

StringBuilder和String可以相互转换:
String ->StringBuilder:可以使用StringBuilder的构造方法
StringBuilder(String str)构造一个字符串生成器,并初始化为指定的字符串内容
StringBuilder -> String:可以使用StringBuilder中的toString方法
public String toString():将当前StringBuilder对象转换为String对象

        //String -> StringBuilder
        String str = "hello";
        System.out.println("str:"+str);
        StringBuilder bu = new StringBuilder(str);
        //往StringBuilder中添加数据
        bu.append("world");
        System.out.println(bu);

        String s = bu.toString();
        System.out.println(s);

在这里插入图片描述

©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页