构建字符串

有些时候,需要由较短的字符串构建字符串,例如:按键或来自文件中的单词。如果采用字符串拼接的方式来达到这个目的,效率会比较低。每次拼接字符串时,都会构建一个String对象,耗时,浪费空间,使用StringBuilder类就可以避免这个问题的发生。

如果需要小段的字符串来构建一个字符串,那么应该按照下列步骤进行。

首先,构建一个空的字符串构建器:

StringBuilder builder = new StringBuilder();

当每次需要添加一部分内容时,就调用append方法。

builder.append(ch);//appends a single character

builder.append(str);//append a string

在字符串构建完成时就调用toString方法,将可以得到一个String对象,其中包含了构建器中的字符串序列。

String completedString = builder.toString();
  • 注释:StringBuilder类在Java5中引入,它的前身是StringBuffer,StringBuffer效率稍微有点低,但允许采用多线程的方式添加或删除字符。如果所有字符串编辑操作都在单个线程中执行(通常都是这样),则应该使用StringBuilder。这两个类的API是一样的。

三种重载构造器的使用案例

几种重载构造器的使用案例

StringBuilder sb1 =new StringBuilder();//#1

StringBuilder sb2=new StringBuilder("123");//#2

StringBuilder sb3=new StringBuilder(123);//#2

说明:在StringBuilder类重载的三种构造器中都调用了父类abstractStringBuilder重载的构造器,在StringBuilder类重载的三种构造器中传参,实际上都是在指定继承于abstractStringBuilder父类中的char类型数组的长度

#1 :调用StringBuilder类中的空参构造器,在调用abstractStringBuilder父类的构造器时默认传入16,即char类型value数组的长度为16.

#2:调用StringBuilder类中的形参为string类型的构造器,在调用abstractStringBuilder父类的构造器时传入该string类型字符串的长度string.length()+16,即char类型value数组的长度为string.length()+16.

#3:调用StringBuilder类中的形参为int类型的构造器,在调用abstractStringBuilder父类的构造器时传入该int类型数据,即char类型value数组的长度为该int类型数据值.

append()方法的使用

说明:对于string类型的字符串,在实现拼接操作时可以使用“+”连接符、concat()方法、join()方法(join()方法用于多个字符串或字符串数组按照指定字符串逐个拼接)

这三个方法的使用都不会改变原字符串,而是返回一个新的字符串(原因基于对string类型字符串在内存中的存储方式的理解,在string、StringBuilder和StringBuffer类的区别一文中已经详细描述,此处不在赘述)

        String str="x";

        str=str+"a";

        str=str.concat("b");

        System.out.println(str);

       

        String str1="w";

        str=str.join("@", str,str1);

        System.out.println(str);

xab

xab@w

StringBuilder类中append()方法的具体使用:在原字符串尾部直接追加一个字符串或字符,改变原字符串

//append()方法的使用

StringBuilder sb =new StringBuilder("天王");

sb.append("盖地").append('虎');

System.out.println(sb);

天王盖地虎

replace()方法的使用

说明:string类中replace()方法:将指定原字符串中的子字符串或字符替换为指定的字符串或字符。不会改变原字符串,而是返回一个新的字符串

//string类中replace()方法的使用

String str="天王盖地虎";

str=str.replace("天王", "地霸").replace('虎', '狐');

System.out.println(str);

地霸盖地狐

StringBuilder类中replace()方法的具体使用:将从指定启使下标开始到指定结尾下标(不含尾下标)的子字符串替换为指定字符串。

//replace()方法的使用

StringBuilder sb =new StringBuilder("天王盖地虎");

sb.replace(1, 3, "@@@");

System.out.println(sb);

天@@@地虎

delete()方法的使用

说明:将从指定启使下标至指定结尾下标(不含尾下标)的子字符串删除

//delete()方法的使用

StringBuilder sb=new StringBuilder("天王盖地虎");

sb.delete(1, 3);

System.out.println(sb);

天地虎

 deletecharAt()方法的使用

说明:将指定下标的字符删除

//deletecharAt()方法的使用

StringBuilder sb=new StringBuilder("天王盖地虎");

sb.deleteCharAt(0);

System.out.println(sb);

王盖地虎

insert()方法的使用

说明:在指定下标位置插入字符串、字符、布尔值等

//insert()方法的使用

StringBuilder sb=new StringBuilder("天王盖地虎");

sb.insert(3, "@").insert(4, '$').insert(0, true);

System.out.println(sb);

true天王盖@$地虎

reverse()方法的使用

说明:将原字符串逆序

//reverse()方法的使用

StringBuilder sb=new StringBuilder("天王盖地虎");

sb.reverse();

System.out.println(sb);

虎地盖王天

StringBuilder()

构造一个空的字符串构造器

int length

返回构建器或缓冲器中的代码单元数量

StringBuilder append(String str)

追加一个字符串并返回this

StringBuilder append(char c)

追加一个代码单元并返回this

StringBuilder appendCodePoint(int cp)

追加一个码点,并将其转换为一个或两个代码单元并返回this

void setCharAt

将第i个代码单元设置为c

StringBuilder insert(int offset,String str)

在offset位置插入一个字符串并返回this

StringBuilder insert(int offset,char c)

在offset位置插入一个代码单元并返回this

StringBuilder delete(int startIndex,int endIndex)

删除偏移量从startIndex到endIndex-1的代码单元并返回this

String toString()

返回一个与构造器或缓冲器内容相同的字符串

  • 11
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值