java的StringBuilder类

java的String类

java的StringBuilder类

StringBuilder类

JDK中对StringBuilder类的基本介绍如下:
在这里插入图片描述
StringBuilder类在java.lang中,众所周知,在java.lang下的所有类都是可以直接调用的,不需要导包
接下来看一下StringBuilder类实现的构造器:
在这里插入图片描述
StringBuilder类中有无参和带参构造器,下面就举栗子说明一下吧:

package Test;

public class Test13 {
    public static void main(String[] args) {
        //创建StringBuilder的对象
        StringBuilder stringBuilder3 = new StringBuilder();
        //表面上调用的是StringBuilder的空构造器,实际底层上是对value数组进行初始化,长度为16
        StringBuilder stringBuilder2 = new StringBuilder(3);
        //表面上调用的是StringBuilder的有参构造器,。传入一个int类型的数据,实际底层上就是对value数组进行初始化,长度为你传入的数字
        StringBuilder stringBuilder = new StringBuilder("ABC");
        System.out.println(stringBuilder.append("def").append("aaaaaaaa").append("bbb").append("ooooo").toString());//链表调用的方式
    }
}
  • StringBuilder类下的append方法
    public StringBuilder append(String str) {
        super.append(str);
        return this;
    }

说明:将布尔参数的字符串表示形式追加到序列中。
String是不可变字符串,不可变指的是在地址不变的情况下,把"abc"变成"abcdef"是不可能的
StringBuilder是可变字符串,在StringBuilder这个对象的地址不变的情况下,想把"abc"变成"abcdef"是可能的,直接追加即可

package Test;

public class Test14 {
    public static void main(String[] args) {
        StringBuilder sb= new StringBuilder();
        System.out.println(sb.append("abc") == sb.append("def"));
    }
}

StringBuilder和StringBuffer类中的常用方法

方法名说明返回值
append()将布尔参数的字符串表示形式追加到序列中。返回一个StringBuilder类型的值
delete()删除此序列的子字符串中的字符,左闭右开返回一个StringBuilder类型的值
deleteCharAt()按此顺序删除指定位置的char。返回一个StringBuilder类型的值
insert()将布尔参数的字符串表示形式插入此序列中。返回一个StringBuilder类型的值
replace()用指定字符串中的字符替换此序列的子字符串中的字符。返回一个StringBuilder类型的值
setCharAt​(int index, char ch)指定索引处的字符设置为传入的参数返回一个StringBuilder类型的值
length()返回字符串的长度返回int类型的值
substring()返回一个新的String,该字符串包含此字符序列中当前包含的字符的子序列。返回String类型的值
package Test;

public class Test15 {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder("nihaojavasdfafasdfasdf");
        //增
        sb.append("这是梦想");
        System.out.println(sb);
        //删
        sb.delete(3, 6);//删除位置在[3,6)上的字符
        System.out.println(sb);
        sb.deleteCharAt(16);//删除位置在16上的字符
        System.out.println(sb);
        //改-->插入
        StringBuilder sb1 = new StringBuilder("$2345234536567575677567asdfasdf");
        sb1.insert(3, ",");//在下标为3的位置上插入,
        System.out.println(sb1);
        StringBuilder sb2 = new StringBuilder("$2342354wsfdasdfasdfasdfasdf");
        //改-->替换
        sb2.replace(3, 5, "你好呀");//在下标[3,5)位置上插入字符串
        System.out.println(sb2);
        sb.setCharAt(3, '!');
        System.out.println(sb);
        //查
        StringBuilder sb3 = new StringBuilder("asdfasdf");
        for (int i = 0; i < sb3.length(); i++) {
            System.out.println(sb3.charAt(i) + "\t");
        }
        System.out.println();
        //截取
        String str = sb3.substring(2, 4);//截取[2,4)返回的是一个新的String,对StringBuilder没有影响
        System.out.println(str);
        System.out.println(sb3);
    }
}

StringBuilder和StringBuffer的区别和联系

String类是一个不可变类,一旦一个String对象被创建后,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁
StringBuffer类则代表一个字符序列可变的字符串,可以通过append insert reverse setCharAt setLength等方法改变其内容,一旦生成了最终的字符串,调用toString方法将其转变为String
jdk1.5新增了一个StringBuilder类,和StringBuffer相似,构造方法和方法基本很相同,不同的是StringBuffer是线程安全的,而StringBuilder是线程不安全的,所以性能高,通常情况下,创建一个内容可变的字符串,应该优先考虑使用StringBuilder

java的抽象类

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

qq_45671732

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

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

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

打赏作者

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

抵扣说明:

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

余额充值