StringBuilder类(学习笔记)

String和StringBuild不是一个类,两者要区别开来.

查阅java.lang.StringBuilder的API,StringBuilder又称为可变字符序列,它是一个类似于 String 的字符串缓冲区,通过某些方法调用可以改变该序列的长度和内容。

它的内部拥有一个数组用来存放字符串内容,进行字符串拼接时,直接在数组中加入新内容。StringBuilder会自动维护数组的扩容。

作用:提高字符串的操作效率

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

  • public StringBuilder()`:构造一个空的StringBuilder容器。
  • public StringBuilder(String str)`:构造一个StringBuilder容器,并将字符串添加进去。
/*
    StringBuilder的构造方法:
        public StringBuilder()	创建一个空白可变字符串对象,不含有任何内容
        public StringBuilder(String str)	根据字符串的内容,来创建可变字符串对象
    --------------------------
    使用类中的构造方法创建对象的目的:通过对象名调用成员方法
    面向对象:找对象,调用对象的方法,完成一些事情
 */
public class Demo01StringBuilder {
    public static void main(String[] args) {
        //使用空参数构造方法创建StringBuilder对象
        StringBuilder b1 = new StringBuilder();
        System.out.println("b1:"+b1);//b1:

        //使用带字符串参数的构造方法创建StringBuilder对象
        StringBuilder b2 = new StringBuilder("abc");
        System.out.println("b2:"+b2);//b2:abc

        System.out.println("--------------------------------");
        //int capacity() 返回StringBuilder当前容量。
        System.out.println(b1.capacity());//16
        System.out.println(b2.capacity());//19
        System.out.println("--------------------------------");
        //int length()返回StringBuilder长度(StringBuilder字符数)。
        System.out.println(b1.length());//0
        System.out.println(b2.length());//3
    }
}

在这里插入图片描述
构造方法
在这里插入图片描述
StringBuilder方法有:

在这里插入图片描述
StringBuilder常用方法有:

public StringBuilder append(...)`:添加任意类型数据的字符串形式,并返回当前对象自身。
public StringBuilder reverse()	`返回相反的字符序列
public String toString()`:将当前StringBuilder对象转换为String对象。
/*
    StringBuilder的常用方法:
        public StringBuilder append (任意类型的数据)	往StringBuilder中添加数据,并返回对象本身
        public StringBuilder reverse()	把StringBuilder中的数据进行反转  abc  cba
        public String toString​()	把StringBuilder转换为String类型
        public int length​()	返回长度

        append:添加
        reverse:转换,反转
        toString:转换为字符串
        length:长度
 */
public class Demo02StringBuilder {
    public static void main(String[] args) {
        //使用空参数构造方法创建StringBuilder对象
        StringBuilder sb = new StringBuilder();
        //以后使用append方法添加数据,无需接收返回值
        //sb.append("abc");
        //sb.append(123);
        //sb.append(true);
        //sb.append('#');
        //sb.append(5.5);
        //System.out.println(sb);//abc123true#5.5

        //链式编程:append方法返回的就是StringBuilder这个对象本身,所以可以继续调用方法
        sb.append("abc").append(123).append(true).append('#').append(5.5);
        System.out.println(sb);//abc123true#5.5

        //public StringBuilder reverse()	把StringBuilder中的数据进行反转(数据位置反转)
        sb.reverse();
        System.out.println(sb);//5.5#eurt321cba

        //public String toString​()	把StringBuilder转换为String类型
        String s = sb.toString();
        System.out.println("s:"+s);//s:"5.5#eurt321cba"

        System.out.println(sb.length());//14
    }

    //使用append往StringBuilder中添加数据
    //StringBuilder bb = sb.append("abc");
    //System.out.println(bb);//"abc"
    //System.out.println(sb);//"abc"

        /*
            了解:源码==>java的一些源代码
            append方法的源代码:
                public StringBuilder append(String str) {
                    super.append(str);
                    return this;
                }
                this是谁?哪个对象调用的方法,方法中的this就是哪个对象
                sb.append("abc");
                sb这个对象调用的append方法,方法中this就是sb
                StringBuilder bb = sb.append("abc")=this=sb;
         */
    //System.out.println(sb==bb);//true 引用数据类型比较的是堆内存中的地址值
}

append方法
在这里插入图片描述
在这里插入图片描述

reverse方法
在这里插入图片描述
toString方法
在这里插入图片描述
在这里插入图片描述
String和StringBuilder相互转换

/*
    String和StringBuilder相互转换
    String转换为StringBuilder==>使用StringBuilder的带参构造方法
        public StringBuilder(String str)	根据字符串的内容,来创建可变字符串对象
    StringBuilder转换为String==>使用toString方法
        public String toString​()	把StringBuilder转换为String类型
 */
public class Demo04StringToStringBuilder {
    public static void main(String[] args) {
        String s1 = "hello";
        //String转换为StringBuilder
        StringBuilder sb = new StringBuilder(s1);
        sb.append("world");
        //StringBuilder转换为String
        String s2 = sb.toString();
        System.out.println(s2);//helloworld
    }
}

总结

1. String类:
	构造方法:创建对象
		String() 创建一个空的字符串对象
        String(String original) 通过参数传递的字符串常量,创建一个新的字符串对象
        String(char[] value)通过参数传递的字符数组,创建一个新的字符串对象
        String(byte[] bytes)通过参数传递的字节数组,查询编码表,创建一个新的字符串对象
	成员方法:使用对象名.方法名(参数)==>调用成员方法
       1). public boolean equals(String anObject):比较两个字符串的内容是否相同。
       		String s1 = "abc";
			String s2 = "aaa";
			boolean b = s1.equals(s2);
			boolean b = "abc".equals("aaa");
       2). public char charAt(int index):获取字符串指定索引位置上的字符。
       		String s1 = "abc";
			System.out.println(s1.charAt(1));//'b'
       3). public int length():获取字符串的长度。
       		String s1 = "abc";
			System.out.println(s1.length());//3	
       4). public String substring(int beginIndex):从beginIndex位置开始,截取到字符串的末尾
       		String s = "你好,我好,大家好,才是真的好";
			String s2 = s.substring(6);//大家好,才是真的好
       5). public String substring(int beginIndex, int endIndex):从beginIndex开始,截取到endIndex – 1处。
       		String s = "你好,我好,大家好,才是真的好";
			String s3 = s.substring(6,9);//大家好  包含头不包含尾
       6). public String replace(String old, String newStr):将当前字符串中的old字符串替换为newStr。
		String s = "你好,我好,大家好,才是真的好";
		需求:把字符串s中大家好,替换为"Hello"
        String s2 = s.replace("大家好","Hello");// "你好,我好,Hello,才是真的好"    
2. StringBuilder类:
	构造方法:
		public StringBuilder()	创建一个空白可变字符串对象,不含有任何内容
        public StringBuilder(String str)	根据字符串的内容,来创建可变字符串对象
	成员方法:
       1). public StringBuilder append (任意类型)添加数据,并返回对象本身
       2). public StringBuilder reverse():反转数据,并返回对象本身
       3). public int length​():返回长度
       4). public String toString​():把StringBuilder转换为String类型
       

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旭子在努力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值